testing and debugging column deleting
This commit is contained in:
@@ -417,7 +417,9 @@ class QuerySet(object):
|
|||||||
|
|
||||||
#get defined fields and their column names
|
#get defined fields and their column names
|
||||||
for name, col in self.model._columns.items():
|
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
|
#construct query string
|
||||||
field_names = zip(*value_pairs)[0]
|
field_names = zip(*value_pairs)[0]
|
||||||
@@ -435,14 +437,13 @@ class QuerySet(object):
|
|||||||
#TODO: delete deleted / nulled columns
|
#TODO: delete deleted / nulled columns
|
||||||
deleted = [k for k,v in instance._values.items() if v.deleted]
|
deleted = [k for k,v in instance._values.items() if v.deleted]
|
||||||
if deleted:
|
if deleted:
|
||||||
import ipdb; ipdb.set_trace()
|
|
||||||
del_fields = [self.model._columns[f] for f in deleted]
|
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]
|
del_fields = [f.db_field_name for f in del_fields if not f.primary_key]
|
||||||
pks = self.model._primary_keys
|
pks = self.model._primary_keys
|
||||||
qs = ['DELETE {}'.format(', '.join(del_fields))]
|
qs = ['DELETE {}'.format(', '.join(del_fields))]
|
||||||
qs += ['FROM {}'.format(self.column_family_name)]
|
qs += ['FROM {}'.format(self.column_family_name)]
|
||||||
qs += ['WHERE']
|
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 += [' AND '.join([eq(f) for f in pks.values()])]
|
||||||
qs = ' '.join(qs)
|
qs = ' '.join(qs)
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ from cqlengine import columns
|
|||||||
|
|
||||||
class TestModel(Model):
|
class TestModel(Model):
|
||||||
count = columns.Integer()
|
count = columns.Integer()
|
||||||
text = columns.Text()
|
text = columns.Text(required=False)
|
||||||
|
|
||||||
class TestModelIO(BaseCassEngTestCase):
|
class TestModelIO(BaseCassEngTestCase):
|
||||||
|
|
||||||
@@ -57,4 +57,12 @@ class TestModelIO(BaseCassEngTestCase):
|
|||||||
def test_column_deleting_works_properly(self):
|
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