diff --git a/docs/changelog.rst b/docs/changelog.rst index 2820ed5f..638c0e80 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -2,6 +2,10 @@ Changelog ========= +Changes in 0.7.5 +================ +- ReferenceFields with dbref=False use ObjectId instead of strings (MongoEngine/mongoengine#134) + See ticket for upgrade notes (https://github.com/MongoEngine/mongoengine/issues/134) Changes in 0.7.4 ================ diff --git a/mongoengine/__init__.py b/mongoengine/__init__.py index 22f0334e..9044e617 100644 --- a/mongoengine/__init__.py +++ b/mongoengine/__init__.py @@ -12,7 +12,7 @@ from signals import * __all__ = (document.__all__ + fields.__all__ + connection.__all__ + queryset.__all__ + signals.__all__) -VERSION = (0, 7, 4) +VERSION = (0, 7, 5) def get_version(): diff --git a/mongoengine/fields.py b/mongoengine/fields.py index e8d92360..12cc7f2a 100644 --- a/mongoengine/fields.py +++ b/mongoengine/fields.py @@ -792,7 +792,7 @@ class ReferenceField(BaseField): collection = self.document_type._get_collection_name() return DBRef(collection, id_) - return "%s" % id_ + return id_ def to_python(self, value): """Convert a MongoDB-compatible type to a Python type. diff --git a/python-mongoengine.spec b/python-mongoengine.spec index 8a3d4751..641b3def 100644 --- a/python-mongoengine.spec +++ b/python-mongoengine.spec @@ -5,7 +5,7 @@ %define srcname mongoengine Name: python-%{srcname} -Version: 0.7.4 +Version: 0.7.5 Release: 1%{?dist} Summary: A Python Document-Object Mapper for working with MongoDB diff --git a/tests/test_dereference.py b/tests/test_dereference.py index 120b1a26..0d757fd7 100644 --- a/tests/test_dereference.py +++ b/tests/test_dereference.py @@ -1,7 +1,7 @@ from __future__ import with_statement import unittest -from bson import DBRef +from bson import DBRef, ObjectId from mongoengine import * from mongoengine.connection import get_db @@ -187,8 +187,8 @@ class FieldTest(unittest.TestCase): self.assertEqual(group.members, [user]) raw_data = Group._get_collection().find_one() - self.assertTrue(isinstance(raw_data['author'], basestring)) - self.assertTrue(isinstance(raw_data['members'][0], basestring)) + self.assertTrue(isinstance(raw_data['author'], ObjectId)) + self.assertTrue(isinstance(raw_data['members'][0], ObjectId)) def test_recursive_reference(self): """Ensure that ReferenceFields can reference their own documents. diff --git a/tests/test_fields.py b/tests/test_fields.py index ce80bf9c..04c3765c 100644 --- a/tests/test_fields.py +++ b/tests/test_fields.py @@ -7,7 +7,7 @@ import tempfile from decimal import Decimal -from bson import Binary, DBRef +from bson import Binary, DBRef, ObjectId import gridfs from nose.plugins.skip import SkipTest @@ -1104,7 +1104,7 @@ class FieldTest(unittest.TestCase): p = Person.objects.get(name="Ross") self.assertEqual(p.parent, p1) - def test_str_reference_fields(self): + def test_objectid_reference_fields(self): class Person(Document): name = StringField() @@ -1117,7 +1117,7 @@ class FieldTest(unittest.TestCase): col = Person._get_collection() data = col.find_one({'name': 'Ross'}) - self.assertEqual(data['parent'], "%s" % p1.pk) + self.assertEqual(data['parent'], p1.pk) p = Person.objects.get(name="Ross") self.assertEqual(p.parent, p1)