testing and debugging column deleting
This commit is contained in:
@@ -417,7 +417,9 @@ class QuerySet(object):
|
||||
|
||||
#get defined fields and their column names
|
||||
for name, col in self.model._columns.items():
|
||||
value_pairs += [(col.db_field_name, values.get(name))]
|
||||
val = values.get(name)
|
||||
if val is None: continue
|
||||
value_pairs += [(col.db_field_name, val)]
|
||||
|
||||
#construct query string
|
||||
field_names = zip(*value_pairs)[0]
|
||||
@@ -435,14 +437,13 @@ class QuerySet(object):
|
||||
#TODO: delete deleted / nulled columns
|
||||
deleted = [k for k,v in instance._values.items() if v.deleted]
|
||||
if deleted:
|
||||
import ipdb; ipdb.set_trace()
|
||||
del_fields = [self.model._columns[f] for f in deleted]
|
||||
del_fields = [f.db_field_name for f in del_fields if not f.primary_key]
|
||||
pks = self.model._primary_keys
|
||||
qs = ['DELETE {}'.format(', '.join(del_fields))]
|
||||
qs += ['FROM {}'.format(self.column_family_name)]
|
||||
qs += ['WHERE']
|
||||
eq = lambda col: '{0} = :{0}'.format(v.db_field_name)
|
||||
eq = lambda col: '{0} = :{0}'.format(v.column.db_field_name)
|
||||
qs += [' AND '.join([eq(f) for f in pks.values()])]
|
||||
qs = ' '.join(qs)
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ from cqlengine import columns
|
||||
|
||||
class TestModel(Model):
|
||||
count = columns.Integer()
|
||||
text = columns.Text()
|
||||
text = columns.Text(required=False)
|
||||
|
||||
class TestModelIO(BaseCassEngTestCase):
|
||||
|
||||
@@ -57,4 +57,12 @@ class TestModelIO(BaseCassEngTestCase):
|
||||
def test_column_deleting_works_properly(self):
|
||||
"""
|
||||
"""
|
||||
tm = TestModel.objects.create(count=8, text='123456789')
|
||||
tm.text = None
|
||||
tm.save()
|
||||
|
||||
tm2 = TestModel.objects(id=tm.pk).first()
|
||||
assert tm2.text is None
|
||||
assert tm2._values['text'].initial_value is None
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user