testing and debugging column deleting

This commit is contained in:
Blake Eggleston
2012-11-24 17:48:40 -08:00
parent 405a0240ad
commit 823e21fdee
2 changed files with 13 additions and 4 deletions

View File

@@ -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)

View File

@@ -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