Merge remote branch 'hmarr/v0.4'
Conflicts: tests/fields.py
This commit is contained in:
commit
c27ccc91d2
@ -52,9 +52,6 @@ class BaseField(object):
|
|||||||
# Get value from document instance if available, if not use default
|
# Get value from document instance if available, if not use default
|
||||||
value = instance._data.get(self.name)
|
value = instance._data.get(self.name)
|
||||||
if value is None:
|
if value is None:
|
||||||
if callable(self.default): # fixes #46
|
|
||||||
value = self.default()
|
|
||||||
else:
|
|
||||||
value = self.default
|
value = self.default
|
||||||
# Allow callable default values
|
# Allow callable default values
|
||||||
if callable(value):
|
if callable(value):
|
||||||
@ -418,6 +415,11 @@ class BaseDocument(object):
|
|||||||
self._meta.get('allow_inheritance', True) == False):
|
self._meta.get('allow_inheritance', True) == False):
|
||||||
data['_cls'] = self._class_name
|
data['_cls'] = self._class_name
|
||||||
data['_types'] = self._superclasses.keys() + [self._class_name]
|
data['_types'] = self._superclasses.keys() + [self._class_name]
|
||||||
|
try:
|
||||||
|
if not data['_id']:
|
||||||
|
del data['_id']
|
||||||
|
except KeyError:
|
||||||
|
pass
|
||||||
return data
|
return data
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
@ -449,7 +451,9 @@ class BaseDocument(object):
|
|||||||
|
|
||||||
for field_name, field in cls._fields.items():
|
for field_name, field in cls._fields.items():
|
||||||
if field.db_field in data:
|
if field.db_field in data:
|
||||||
data[field_name] = field.to_python(data[field.db_field])
|
value = data[field.db_field]
|
||||||
|
data[field_name] = (value if value is None
|
||||||
|
else field.to_python(value))
|
||||||
|
|
||||||
obj = cls(**data)
|
obj = cls(**data)
|
||||||
obj._present_fields = present_fields
|
obj._present_fields = present_fields
|
||||||
|
@ -699,7 +699,7 @@ class FieldTest(unittest.TestCase):
|
|||||||
Event.drop_collection()
|
Event.drop_collection()
|
||||||
|
|
||||||
def test_ensure_unique_default_instances(self):
|
def test_ensure_unique_default_instances(self):
|
||||||
"""Ensure that every document has it's own unique default instance."""
|
"""Ensure that every field has it's own unique default instance."""
|
||||||
class D(Document):
|
class D(Document):
|
||||||
data = DictField()
|
data = DictField()
|
||||||
data2 = DictField(default=lambda: {})
|
data2 = DictField(default=lambda: {})
|
||||||
|
Loading…
x
Reference in New Issue
Block a user