From dc5a613bc7a28148791f8fa42a7cebfe83fe5a5f Mon Sep 17 00:00:00 2001 From: Ross Lawley Date: Mon, 11 Jul 2011 09:19:27 +0100 Subject: [PATCH] Fixes conversion of null genericreferences in querysets closes #211 --- mongoengine/fields.py | 3 +++ tests/fields.py | 12 ++++++++++++ 2 files changed, 15 insertions(+) diff --git a/mongoengine/fields.py b/mongoengine/fields.py index eb0825e6..88040115 100644 --- a/mongoengine/fields.py +++ b/mongoengine/fields.py @@ -653,6 +653,9 @@ class GenericReferenceField(BaseField): return doc def to_mongo(self, document): + if document is None: + return None + id_field_name = document.__class__._meta['id_field'] id_field = document.__class__._fields[id_field_name] diff --git a/tests/fields.py b/tests/fields.py index f2543fc1..7a752998 100644 --- a/tests/fields.py +++ b/tests/fields.py @@ -1095,6 +1095,18 @@ class FieldTest(unittest.TestCase): Link.drop_collection() User.drop_collection() + def test_generic_reference_is_none(self): + + class Person(Document): + name = StringField() + city = GenericReferenceField() + + Person.drop_collection() + Person(name="Wilson Jr").save() + + self.assertEquals(repr(Person.objects(city=None)), + "[]") + def test_binary_fields(self): """Ensure that binary fields can be stored and retrieved. """