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
=========
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
================

View File

@ -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():

View File

@ -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.

View File

@ -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

View File

@ -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.

View File

@ -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)