From 3c5c3b50261e92fb94e3573e8d301c843a49615b Mon Sep 17 00:00:00 2001 From: Arto Jantunen Date: Wed, 3 Oct 2018 09:56:59 +0300 Subject: [PATCH] Fix invalid isinstance check in ListField.validate Using QuerySet directly would fail if QuerySetNoCache was used. Sadly the test suite does not have a case where QuerySet would appear here, so adding a test for this special case is not trivial. --- mongoengine/fields.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mongoengine/fields.py b/mongoengine/fields.py index e4e8ee2c..04e89256 100644 --- a/mongoengine/fields.py +++ b/mongoengine/fields.py @@ -34,7 +34,8 @@ from mongoengine.connection import DEFAULT_CONNECTION_NAME, get_db from mongoengine.document import Document, EmbeddedDocument from mongoengine.errors import DoesNotExist, InvalidQueryError, ValidationError from mongoengine.python_support import StringIO -from mongoengine.queryset import DO_NOTHING, QuerySet +from mongoengine.queryset import DO_NOTHING +from mongoengine.queryset.base import BaseQuerySet try: from PIL import Image, ImageOps @@ -851,7 +852,7 @@ class ListField(ComplexBaseField): def validate(self, value): """Make sure that a list of valid fields is being used.""" - if not isinstance(value, (list, tuple, QuerySet)): + if not isinstance(value, (list, tuple, BaseQuerySet)): self.error('Only lists and tuples may be used in a list field') super(ListField, self).validate(value)