diff --git a/mongoengine/fields.py b/mongoengine/fields.py index 01d3fc63..ee029065 100644 --- a/mongoengine/fields.py +++ b/mongoengine/fields.py @@ -777,7 +777,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 98065501..abc50a3f 100644 --- a/tests/test_fields.py +++ b/tests/test_fields.py @@ -1104,6 +1104,15 @@ 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.assertIsInstance(mongoed['parent'], ObjectId) def test_objectid_reference_fields(self):