From 1a4533a9cf9f3a706d79a250db3db6522678c46a Mon Sep 17 00:00:00 2001 From: Ross Lawley Date: Mon, 23 Jul 2012 14:46:48 +0100 Subject: [PATCH] Minor perf update --- mongoengine/base.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/mongoengine/base.py b/mongoengine/base.py index 09768c4a..7b1f3206 100644 --- a/mongoengine/base.py +++ b/mongoengine/base.py @@ -198,7 +198,8 @@ class BaseField(object): """Descriptor for assigning a value to a field in a document. """ instance._data[self.name] = value - instance._mark_as_changed(self.name) + if instance._initialised: + instance._mark_as_changed(self.name) def error(self, message="", errors=None, field_name=None): """Raises a ValidationError. @@ -791,6 +792,8 @@ class BaseDocument(object): # Assign default values to instance for attr_name, field in self._fields.items(): + if self._db_field_map.get(attr_name, attr_name) in values: + continue value = getattr(self, attr_name, None) setattr(self, attr_name, value) @@ -821,6 +824,8 @@ class BaseDocument(object): signals.post_init.send(self.__class__, document=self) def __setattr__(self, name, value): + if not self._initialised: + return super(BaseDocument, self).__setattr__(name, value) # Handle dynamic data only if an initialised dynamic document if self._dynamic and not self._dynamic_lock: