Closes #46 by instantiating a new default instance for every field by request.
This commit is contained in:
parent
327452622e
commit
51065e7a4d
@ -52,7 +52,10 @@ class BaseField(object):
|
||||
# Get value from document instance if available, if not use default
|
||||
value = instance._data.get(self.name)
|
||||
if value is None:
|
||||
value = self.default
|
||||
if callable(self.default): # fixes #46
|
||||
value = self.default()
|
||||
else:
|
||||
value = self.default
|
||||
# Allow callable default values
|
||||
if callable(value):
|
||||
value = value()
|
||||
|
@ -263,7 +263,7 @@ class ListField(BaseField):
|
||||
raise ValidationError('Argument to ListField constructor must be '
|
||||
'a valid field')
|
||||
self.field = field
|
||||
kwargs.setdefault('default', [])
|
||||
kwargs.setdefault('default', lambda: [])
|
||||
super(ListField, self).__init__(**kwargs)
|
||||
|
||||
def __get__(self, instance, owner):
|
||||
@ -356,7 +356,7 @@ class DictField(BaseField):
|
||||
def __init__(self, basecls=None, *args, **kwargs):
|
||||
self.basecls = basecls or BaseField
|
||||
assert issubclass(self.basecls, BaseField)
|
||||
kwargs.setdefault('default', {})
|
||||
kwargs.setdefault('default', lambda: {})
|
||||
super(DictField, self).__init__(*args, **kwargs)
|
||||
|
||||
def validate(self, value):
|
||||
|
Loading…
x
Reference in New Issue
Block a user