Fix #17876: Corrected an exception (regression) raised where select_realted and only is used on a proxy model. Thanks milosu and charettes.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@17692 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
db512b4d8c
commit
9d98b9eb4b
|
@ -1266,7 +1266,7 @@ def get_klass_info(klass, max_depth=0, cur_depth=0, requested=None,
|
||||||
return None
|
return None
|
||||||
|
|
||||||
if only_load:
|
if only_load:
|
||||||
load_fields = only_load.get(klass)
|
load_fields = only_load.get(klass) or set()
|
||||||
# When we create the object, we will also be creating populating
|
# When we create the object, we will also be creating populating
|
||||||
# all the parent classes, so traverse the parent classes looking
|
# all the parent classes, so traverse the parent classes looking
|
||||||
# for fields that must be included on load.
|
# for fields that must be included on load.
|
||||||
|
|
|
@ -22,3 +22,7 @@ class Child(Primary):
|
||||||
|
|
||||||
class BigChild(Primary):
|
class BigChild(Primary):
|
||||||
other = models.CharField(max_length=50)
|
other = models.CharField(max_length=50)
|
||||||
|
|
||||||
|
class ChildProxy(Child):
|
||||||
|
class Meta:
|
||||||
|
proxy=True
|
||||||
|
|
|
@ -3,7 +3,7 @@ from __future__ import absolute_import
|
||||||
from django.db.models.query_utils import DeferredAttribute
|
from django.db.models.query_utils import DeferredAttribute
|
||||||
from django.test import TestCase
|
from django.test import TestCase
|
||||||
|
|
||||||
from .models import Secondary, Primary, Child, BigChild
|
from .models import Secondary, Primary, Child, BigChild, ChildProxy
|
||||||
|
|
||||||
|
|
||||||
class DeferTests(TestCase):
|
class DeferTests(TestCase):
|
||||||
|
@ -145,3 +145,7 @@ class DeferTests(TestCase):
|
||||||
obj.name = "bb"
|
obj.name = "bb"
|
||||||
obj.save()
|
obj.save()
|
||||||
|
|
||||||
|
def test_defer_proxy(self):
|
||||||
|
# using select related and only should not result in Exception
|
||||||
|
for obj in ChildProxy.objects.all().select_related().only('id'):
|
||||||
|
continue
|
||||||
|
|
Loading…
Reference in New Issue