From a1d43fecd962ea856e361fe59bf0913269f8eb84 Mon Sep 17 00:00:00 2001 From: Greg Banks Date: Wed, 11 Apr 2012 16:37:22 -0700 Subject: [PATCH] fix for issue 473 --- mongoengine/dereference.py | 3 +++ tests/dereference.py | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/mongoengine/dereference.py b/mongoengine/dereference.py index b1529d3c..b67c2d2f 100644 --- a/mongoengine/dereference.py +++ b/mongoengine/dereference.py @@ -113,6 +113,9 @@ class DeReference(object): if '_cls' in ref: doc = get_document(ref["_cls"])._from_son(ref) else: + if doc_type is None: + doc_type = get_document( + ''.join(x.capitalize() for x in col.split('_'))) doc = doc_type._from_son(ref) object_map[doc.id] = doc return object_map diff --git a/tests/dereference.py b/tests/dereference.py index 8a4b310e..0ed64e6c 100644 --- a/tests/dereference.py +++ b/tests/dereference.py @@ -810,3 +810,22 @@ class FieldTest(unittest.TestCase): room = Room.objects.first().select_related() self.assertEquals(room.staffs_with_position[0]['staff'], sarah) self.assertEquals(room.staffs_with_position[1]['staff'], bob) + + def test_document_reload_no_inheritance(self): + class Foo(Document): + meta = {'allow_inheritance': False} + bar = ReferenceField('Bar') + + class Bar(Document): + meta = {'allow_inheritance': False} + msg = StringField(required=True, default='Blammo!') + + Foo.drop_collection() + Bar.drop_collection() + + bar = Bar() + bar.save() + foo = Foo() + foo.bar = bar + foo.save() + foo.reload()