diff --git a/AUTHORS b/AUTHORS index 6ba2f88d5..bae1dcbab 100644 --- a/AUTHORS +++ b/AUTHORS @@ -124,3 +124,4 @@ that much better: * Stefan Wójcik * dimonb * Garry Polley + * Jakub Kot diff --git a/mongoengine/fields.py b/mongoengine/fields.py index 01d3fc63a..ee029065c 100644 --- a/mongoengine/fields.py +++ b/mongoengine/fields.py @@ -777,7 +777,7 @@ def __get__(self, instance, owner): 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 98065501a..abc50a3fa 100644 --- a/tests/test_fields.py +++ b/tests/test_fields.py @@ -1104,6 +1104,15 @@ class Person(Document): 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.assertIsInstance(mongoed['parent'], ObjectId) def test_objectid_reference_fields(self):