Fix ReferenceField dbref = False

This commit is contained in:
Ross Lawley 2012-09-18 21:37:45 +00:00
parent 7cd38c56c6
commit ab4d4e6230
6 changed files with 13 additions and 9 deletions

View File

@ -2,6 +2,10 @@
Changelog 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 Changes in 0.7.4
================ ================

View File

@ -12,7 +12,7 @@ from signals import *
__all__ = (document.__all__ + fields.__all__ + connection.__all__ + __all__ = (document.__all__ + fields.__all__ + connection.__all__ +
queryset.__all__ + signals.__all__) queryset.__all__ + signals.__all__)
VERSION = (0, 7, 4) VERSION = (0, 7, 5)
def get_version(): def get_version():

View File

@ -792,7 +792,7 @@ class ReferenceField(BaseField):
collection = self.document_type._get_collection_name() collection = self.document_type._get_collection_name()
return DBRef(collection, id_) return DBRef(collection, id_)
return "%s" % id_ return id_
def to_python(self, value): def to_python(self, value):
"""Convert a MongoDB-compatible type to a Python type. """Convert a MongoDB-compatible type to a Python type.

View File

@ -5,7 +5,7 @@
%define srcname mongoengine %define srcname mongoengine
Name: python-%{srcname} Name: python-%{srcname}
Version: 0.7.4 Version: 0.7.5
Release: 1%{?dist} Release: 1%{?dist}
Summary: A Python Document-Object Mapper for working with MongoDB Summary: A Python Document-Object Mapper for working with MongoDB

View File

@ -1,7 +1,7 @@
from __future__ import with_statement from __future__ import with_statement
import unittest import unittest
from bson import DBRef from bson import DBRef, ObjectId
from mongoengine import * from mongoengine import *
from mongoengine.connection import get_db from mongoengine.connection import get_db
@ -187,8 +187,8 @@ class FieldTest(unittest.TestCase):
self.assertEqual(group.members, [user]) self.assertEqual(group.members, [user])
raw_data = Group._get_collection().find_one() raw_data = Group._get_collection().find_one()
self.assertTrue(isinstance(raw_data['author'], basestring)) self.assertTrue(isinstance(raw_data['author'], ObjectId))
self.assertTrue(isinstance(raw_data['members'][0], basestring)) self.assertTrue(isinstance(raw_data['members'][0], ObjectId))
def test_recursive_reference(self): def test_recursive_reference(self):
"""Ensure that ReferenceFields can reference their own documents. """Ensure that ReferenceFields can reference their own documents.

View File

@ -7,7 +7,7 @@ import tempfile
from decimal import Decimal from decimal import Decimal
from bson import Binary, DBRef from bson import Binary, DBRef, ObjectId
import gridfs import gridfs
from nose.plugins.skip import SkipTest from nose.plugins.skip import SkipTest
@ -1104,7 +1104,7 @@ class FieldTest(unittest.TestCase):
p = Person.objects.get(name="Ross") p = Person.objects.get(name="Ross")
self.assertEqual(p.parent, p1) self.assertEqual(p.parent, p1)
def test_str_reference_fields(self): def test_objectid_reference_fields(self):
class Person(Document): class Person(Document):
name = StringField() name = StringField()
@ -1117,7 +1117,7 @@ class FieldTest(unittest.TestCase):
col = Person._get_collection() col = Person._get_collection()
data = col.find_one({'name': 'Ross'}) 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") p = Person.objects.get(name="Ross")
self.assertEqual(p.parent, p1) self.assertEqual(p.parent, p1)