Fixed #22050 -- Fixed defer fields on proxy related models.
This commit is contained in:
parent
815e7a5721
commit
9385aa3198
|
@ -585,7 +585,7 @@ class Query(object):
|
|||
must_include = {orig_opts.concrete_model: set([orig_opts.pk])}
|
||||
for field_name in field_names:
|
||||
parts = field_name.split(LOOKUP_SEP)
|
||||
cur_model = self.model
|
||||
cur_model = self.model._meta.concrete_model
|
||||
opts = orig_opts
|
||||
for name in parts[:-1]:
|
||||
old_model = cur_model
|
||||
|
|
|
@ -21,6 +21,11 @@ class RelatedItem(models.Model):
|
|||
item = models.ForeignKey(Item)
|
||||
|
||||
|
||||
class ProxyRelated(RelatedItem):
|
||||
class Meta:
|
||||
proxy = True
|
||||
|
||||
|
||||
class Child(models.Model):
|
||||
name = models.CharField(max_length=10)
|
||||
value = models.IntegerField()
|
||||
|
|
|
@ -10,7 +10,9 @@ from django.test import TestCase, override_settings
|
|||
|
||||
from .models import (
|
||||
ResolveThis, Item, RelatedItem, Child, Leaf, Proxy, SimpleItem, Feature,
|
||||
ItemAndSimpleItem, OneToOneItem, SpecialFeature, Location, Request)
|
||||
ItemAndSimpleItem, OneToOneItem, SpecialFeature, Location, Request,
|
||||
ProxyRelated,
|
||||
)
|
||||
|
||||
|
||||
class DeferRegressionTest(TestCase):
|
||||
|
@ -207,6 +209,17 @@ class DeferRegressionTest(TestCase):
|
|||
self.assertEqual(obj.item, item2)
|
||||
self.assertEqual(obj.item_id, item2.id)
|
||||
|
||||
def test_proxy_model_defer_with_selected_related(self):
|
||||
# Regression for #22050
|
||||
item = Item.objects.create(name="first", value=47)
|
||||
related = RelatedItem.objects.create(item=item)
|
||||
# Defer fields with only()
|
||||
obj = ProxyRelated.objects.all().select_related().only('item__name')[0]
|
||||
with self.assertNumQueries(0):
|
||||
self.assertEqual(obj.item.name, "first")
|
||||
with self.assertNumQueries(1):
|
||||
self.assertEqual(obj.item.value, 47)
|
||||
|
||||
def test_only_with_select_related(self):
|
||||
# Test for #17485.
|
||||
item = SimpleItem.objects.create(name='first', value=47)
|
||||
|
|
Loading…
Reference in New Issue