diff --git a/mongoengine/base/datastructures.py b/mongoengine/base/datastructures.py index dc92d183..48414f21 100644 --- a/mongoengine/base/datastructures.py +++ b/mongoengine/base/datastructures.py @@ -240,6 +240,8 @@ class StrictDict(object): if allowed_keys not in cls._classes: class SpecificStrictDict(cls): __slots__ = allowed_keys_tuple + def __repr__(self): + return "{%s}" % ', '.join('"{!s}": {!r}'.format(k,v) for (k,v) in self.iteritems()) cls._classes[allowed_keys] = SpecificStrictDict return cls._classes[allowed_keys] diff --git a/mongoengine/base/document.py b/mongoengine/base/document.py index 17ff5519..9ab66721 100644 --- a/mongoengine/base/document.py +++ b/mongoengine/base/document.py @@ -56,9 +56,9 @@ class BaseDocument(object): signals.pre_init.send(self.__class__, document=self, values=values) if self.STRICT and not self._dynamic: - self._data = StrictDict.create(allowed_keys=self._fields.keys())() + self._data = StrictDict.create(allowed_keys=self._fields_ordered)() else: - self._data = SemiStrictDict.create(allowed_keys=self._fields.keys())() + self._data = SemiStrictDict.create(allowed_keys=self._fields_ordered)() self._dynamic_fields = SON()