Skip to content

Commit d146052

Browse files
committed
Fix some issues related to default values
1 parent 2f47415 commit d146052

2 files changed

Lines changed: 8 additions & 4 deletions

File tree

cassandra/cqlengine/columns.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ def __init__(self, instance, column, value):
3737

3838
@property
3939
def deleted(self):
40-
return self.column._val_is_null(self.value) and (self.explicit or self.previous_value is not None)
40+
return self.column._val_is_null(self.value) and (self.explicit or not self.column._val_is_null(self.previous_value))
4141

4242
@property
4343
def changed(self):

tests/integration/cqlengine/model/test_model_io.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -514,16 +514,20 @@ class TestDefaultValueTracking(Model):
514514
# yet.
515515
self.assertTrue(instance._values['id'].previous_value is None)
516516
self.assertTrue(instance._values['int1'].previous_value is None)
517-
self.assertTrue(instance._values['int2'].previous_value is None)
518517
self.assertTrue(instance._values['int3'].previous_value is None)
519-
self.assertTrue(instance._values['int4'].previous_value is None)
520518
self.assertTrue(instance._values['int5'].previous_value is None)
521519
self.assertTrue(instance._values['int6'].previous_value is None)
522520

521+
# When a column has a default value and that field has no explicit value specified at
522+
# the instance creation, the previous_value should be set to the default value to
523+
# avoid any undesired update
524+
self.assertEqual(instance._values['int2'].previous_value, 456)
525+
self.assertIsNotNone(instance._values['int4'])
526+
523527
# All explicitely set columns, and those with default values are
524528
# flagged has changed.
525529
self.assertTrue(set(instance.get_changed_columns()) == set([
526-
'id', 'int1', 'int2', 'int3', 'int4', 'int5']))
530+
'id', 'int1', 'int3', 'int5']))
527531

528532
def test_save_to_none(self):
529533
"""

0 commit comments

Comments
 (0)