Explorar o código

Fixed #26026 -- Fixed isinstance crash comparing EmptyQuerySet to non-QuerySet.

Anderson Resende %!s(int64=9) %!d(string=hai) anos
pai
achega
b5f8c81ce1
Modificáronse 2 ficheiros con 2 adicións e 1 borrados
  1. 1 1
      django/db/models/query.py
  2. 1 0
      tests/basic/tests.py

+ 1 - 1
django/db/models/query.py

@@ -1171,7 +1171,7 @@ class QuerySet(object):
 
 class InstanceCheckMeta(type):
     def __instancecheck__(self, instance):
-        return instance.query.is_empty()
+        return isinstance(instance, QuerySet) and instance.query.is_empty()
 
 
 class EmptyQuerySet(six.with_metaclass(InstanceCheckMeta)):

+ 1 - 0
tests/basic/tests.py

@@ -367,6 +367,7 @@ class ModelTest(TestCase):
         with self.assertRaises(TypeError):
             EmptyQuerySet()
         self.assertIsInstance(Article.objects.none(), EmptyQuerySet)
+        self.assertFalse(isinstance('', EmptyQuerySet))
 
     def test_emptyqs_values(self):
         # test for #15959