Dynamic fields are now validated on save

(MongoEngine/mongoengine#153) (MongoEngine/mongoengine#154)
This commit is contained in:
Ross Lawley
2012-12-19 12:32:06 +00:00
parent c528ac09d6
commit 9cc02d4dbe
5 changed files with 33 additions and 1 deletions

View File

@@ -245,6 +245,9 @@ class BaseDocument(object):
# Get a list of tuples of field names and their current values
fields = [(field, self._data.get(name))
for name, field in self._fields.items()]
if self._dynamic:
fields += [(field, self._data.get(name))
for name, field in self._dynamic_fields.items()]
EmbeddedDocumentField = _import_class("EmbeddedDocumentField")
GenericEmbeddedDocumentField = _import_class("GenericEmbeddedDocumentField")

View File

@@ -564,6 +564,10 @@ class DynamicField(BaseField):
return StringField().prepare_query_value(op, value)
return self.to_mongo(value)
def validate(self, value, clean=True):
if hasattr(value, "validate"):
value.validate(clean=clean)
class ListField(ComplexBaseField):
"""A list field that wraps a standard field, allowing multiple instances