Commit 9d98b9eb authored by Karen Tracey's avatar Karen Tracey
Browse files

Fix #17876: Corrected an exception (regression) raised where select_realted...

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
parent db512b4d
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1266,7 +1266,7 @@ def get_klass_info(klass, max_depth=0, cur_depth=0, requested=None,
        return None

    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
        # all the parent classes, so traverse the parent classes looking
        # for fields that must be included on load.
+4 −0
Original line number Diff line number Diff line
@@ -22,3 +22,7 @@ class Child(Primary):

class BigChild(Primary):
    other = models.CharField(max_length=50)

class ChildProxy(Child):
    class Meta:
        proxy=True
+5 −1
Original line number Diff line number Diff line
@@ -3,7 +3,7 @@ from __future__ import absolute_import
from django.db.models.query_utils import DeferredAttribute
from django.test import TestCase

from .models import Secondary, Primary, Child, BigChild
from .models import Secondary, Primary, Child, BigChild, ChildProxy


class DeferTests(TestCase):
@@ -145,3 +145,7 @@ class DeferTests(TestCase):
        obj.name = "bb"
        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