fix-#397: Allow specifying the '_cls' as a field for indexes

This commit is contained in:
DavidBord
2014-08-03 12:54:22 +03:00
parent 41cfe5d2ca
commit 9b30afeca9
9 changed files with 46 additions and 8 deletions

View File

@@ -26,7 +26,7 @@ NON_FIELD_ERRORS = '__all__'
class BaseDocument(object):
__slots__ = ('_changed_fields', '_initialised', '_created', '_data',
'_dynamic_fields', '_auto_id_field', '_db_field_map', '_cls', '__weakref__')
'_dynamic_fields', '_auto_id_field', '_db_field_map', '__weakref__')
_dynamic = False
_dynamic_lock = True
@@ -78,6 +78,9 @@ class BaseDocument(object):
value = getattr(self, key, None)
setattr(self, key, value)
if "_cls" not in values:
self._cls = self._class_name
# Set passed values after initialisation
if self._dynamic:
dynamic_data = {}

View File

@@ -47,6 +47,10 @@ class DocumentMetaclass(type):
meta.merge(base._meta)
attrs['_meta'] = meta
if '_meta' in attrs and attrs['_meta'].get('allow_inheritance', ALLOW_INHERITANCE):
StringField = _import_class('StringField')
attrs['_cls'] = StringField()
# Handle document Fields
# Merge all fields from subclasses