diff --git a/AUTHORS b/AUTHORS index 330256c2..864c95cc 100644 --- a/AUTHORS +++ b/AUTHORS @@ -126,3 +126,4 @@ that much better: * Garry Polley * Adrian Scott * Peter Teichman + * Jakub Kot diff --git a/mongoengine/fields.py b/mongoengine/fields.py index 3f413b25..213c2148 100644 --- a/mongoengine/fields.py +++ b/mongoengine/fields.py @@ -778,7 +778,7 @@ class ReferenceField(BaseField): def to_mongo(self, document): if isinstance(document, DBRef): if not self.dbref: - return DBRef.id + return document.id return document elif not self.dbref and isinstance(document, basestring): return document diff --git a/tests/test_fields.py b/tests/test_fields.py index fdcc3080..0483519e 100644 --- a/tests/test_fields.py +++ b/tests/test_fields.py @@ -1105,6 +1105,16 @@ class FieldTest(unittest.TestCase): p = Person.objects.get(name="Ross") self.assertEqual(p.parent, p1) + def test_dbref_to_mongo(self): + class Person(Document): + name = StringField() + parent = ReferenceField('self', dbref=False) + + p1 = Person._from_son({'name': "Yakxxx", + 'parent': "50a234ea469ac1eda42d347d"}) + mongoed = p1.to_mongo() + self.assertTrue(isinstance(mongoed['parent'], ObjectId)) + def test_objectid_reference_fields(self): class Person(Document):