Minor perf update

This commit is contained in:
Ross Lawley 2012-07-23 14:46:48 +01:00
parent 3070e0bf5d
commit 1a4533a9cf

View File

@ -198,7 +198,8 @@ class BaseField(object):
"""Descriptor for assigning a value to a field in a document. """Descriptor for assigning a value to a field in a document.
""" """
instance._data[self.name] = value 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): def error(self, message="", errors=None, field_name=None):
"""Raises a ValidationError. """Raises a ValidationError.
@ -791,6 +792,8 @@ class BaseDocument(object):
# Assign default values to instance # Assign default values to instance
for attr_name, field in self._fields.items(): 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) value = getattr(self, attr_name, None)
setattr(self, attr_name, value) setattr(self, attr_name, value)
@ -821,6 +824,8 @@ class BaseDocument(object):
signals.post_init.send(self.__class__, document=self) signals.post_init.send(self.__class__, document=self)
def __setattr__(self, name, value): 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 # Handle dynamic data only if an initialised dynamic document
if self._dynamic and not self._dynamic_lock: if self._dynamic and not self._dynamic_lock: