From 7195236a3b3a5e5a4740aea8085277af4636d081 Mon Sep 17 00:00:00 2001 From: Stefan Wojcik Date: Sun, 7 May 2017 20:26:52 -0400 Subject: [PATCH] better db_field validation --- mongoengine/base/fields.py | 9 ++++++++- tests/document/instance.py | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/mongoengine/base/fields.py b/mongoengine/base/fields.py index 5658b185..e2b5d321 100644 --- a/mongoengine/base/fields.py +++ b/mongoengine/base/fields.py @@ -81,7 +81,14 @@ class BaseField(object): self.sparse = sparse self._owner_document = None - # Validate the db_field + # Make sure db_field is a string (if it's explicitly defined). + if ( + self.db_field is not None and + not isinstance(self.db_field, six.string_types) + ): + raise TypeError('db_field should be a string.') + + # Make sure db_field doesn't contain any forbidden characters. if isinstance(self.db_field, six.string_types) and ( '.' in self.db_field or '\0' in self.db_field or diff --git a/tests/document/instance.py b/tests/document/instance.py index c98b1405..37bbe337 100644 --- a/tests/document/instance.py +++ b/tests/document/instance.py @@ -242,7 +242,7 @@ class InstanceTest(unittest.TestCase): Zoo.drop_collection() class Zoo(Document): - animals = ListField(GenericReferenceField(Animal)) + animals = ListField(GenericReferenceField()) # Save a reference to each animal zoo = Zoo(animals=Animal.objects)