Fixed False BooleanField marked as unset by _delta()

Closes #282
This commit is contained in:
Ross Lawley 2011-12-02 06:03:15 -08:00
parent ba59e498de
commit 6419a8d09a
3 changed files with 15 additions and 1 deletions

View File

@ -5,6 +5,7 @@ Changelog
Changes in dev
==============
- Fixed issue saving False booleans
- Fixed issue with dynamic documents deltas
- Added Reverse Delete Rule support to ListFields - MapFields aren't supported
- Added customisable cascade kwarg options

View File

@ -978,7 +978,7 @@ class BaseDocument(object):
# Determine if any changed items were actually unset.
for path, value in set_data.items():
if value:
if value or isinstance(value, bool):
continue
# If we've set a value that ain't the default value dont unset it.

View File

@ -2459,5 +2459,18 @@ class DocumentTest(unittest.TestCase):
a.reload()
self.assertEquals(a.b.field2.c_field, 'new value')
def test_can_save_false_values(self):
class Doc(Document):
foo = StringField()
archived = BooleanField(default=False, required=True)
Doc.drop_collection()
d = Doc()
d.save()
d.archived = False
d.save()
self.assertEquals(Doc.objects(archived=False).count(), 1)
if __name__ == '__main__':
unittest.main()