Fixed #23721 -- check_related_objects without calling __iter__

Refs #14334
This commit is contained in:
Collin Anderson 2014-10-27 21:36:47 -04:00 committed by Anssi Kääriäinen
parent 00aa562884
commit ae7cb992bc
2 changed files with 6 additions and 3 deletions

View File

@ -1102,12 +1102,11 @@ class Query(object):
'Cannot use QuerySet for "%s": Use a QuerySet for "%s".' %
(value.model._meta.model_name, opts.object_name)
)
elif hasattr(value, '_meta'):
self.check_query_object_type(value, opts)
elif hasattr(value, '__iter__'):
for v in value:
self.check_query_object_type(v, opts)
else:
# expecting single model instance here
self.check_query_object_type(value, opts)
def build_lookup(self, lookups, lhs, rhs):
lookups = lookups[:]

View File

@ -408,6 +408,10 @@ class ObjectA(models.Model):
def __str__(self):
return self.name
def __iter__(self):
# Ticket #23721
assert False, 'type checking should happen without calling model __iter__'
class ProxyObjectA(ObjectA):
class Meta: