diff --git a/mongoengine/fields.py b/mongoengine/fields.py index abea212c..a1638bf0 100644 --- a/mongoengine/fields.py +++ b/mongoengine/fields.py @@ -666,6 +666,9 @@ class ReferenceField(BaseField): return pymongo.dbref.DBRef(collection, id_) def prepare_query_value(self, op, value): + if value is None: + return None + return self.to_mongo(value) def validate(self, value): @@ -743,6 +746,9 @@ class GenericReferenceField(BaseField): return {'_cls': document._class_name, '_ref': ref} def prepare_query_value(self, op, value): + if value is None: + return None + return self.to_mongo(value) diff --git a/setup.py b/setup.py index 6877b625..d4dd5abd 100644 --- a/setup.py +++ b/setup.py @@ -47,5 +47,5 @@ setup(name='mongoengine', classifiers=CLASSIFIERS, install_requires=['pymongo'], test_suite='tests', - tests_require=['blinker', 'django==1.3'] + tests_require=['blinker', 'django>=1.3'] ) diff --git a/tests/fields.py b/tests/fields.py index c95b544e..4f1f13d4 100644 --- a/tests/fields.py +++ b/tests/fields.py @@ -997,10 +997,16 @@ class FieldTest(unittest.TestCase): mongodb = Product(name='MongoDB', company=ten_gen) mongodb.save() + me = Product(name='MongoEngine') + me.save() + obj = Product.objects(company=ten_gen).first() self.assertEqual(obj, mongodb) self.assertEqual(obj.company, ten_gen) + obj = Product.objects(company=None).first() + self.assertEqual(obj, me) + def test_reference_query_conversion(self): """Ensure that ReferenceFields can be queried using objects and values of the type of the primary key of the referenced object.