mirror of
https://github.com/django/django.git
synced 2024-12-22 17:16:24 +00:00
Fixed #33816 -- Fixed QuerySet.only() after select_related() crash on proxy models.
This commit is contained in:
parent
5eb6a2b33d
commit
425718726b
@ -748,6 +748,7 @@ class Query(BaseExpression):
|
|||||||
cur_model = source.related_model
|
cur_model = source.related_model
|
||||||
else:
|
else:
|
||||||
cur_model = source.remote_field.model
|
cur_model = source.remote_field.model
|
||||||
|
cur_model = cur_model._meta.concrete_model
|
||||||
opts = cur_model._meta
|
opts = cur_model._meta
|
||||||
# Even if we're "just passing through" this model, we must add
|
# Even if we're "just passing through" this model, we must add
|
||||||
# both the current model's pk and the related reference field
|
# both the current model's pk and the related reference field
|
||||||
|
@ -395,6 +395,12 @@ class ProxyModelTests(TestCase):
|
|||||||
p = MyPerson.objects.get(pk=100)
|
p = MyPerson.objects.get(pk=100)
|
||||||
self.assertEqual(p.name, "Elvis Presley")
|
self.assertEqual(p.name, "Elvis Presley")
|
||||||
|
|
||||||
|
def test_select_related_only(self):
|
||||||
|
user = ProxyTrackerUser.objects.create(name="Joe Doe", status="test")
|
||||||
|
issue = Issue.objects.create(summary="New issue", assignee=user)
|
||||||
|
qs = Issue.objects.select_related("assignee").only("assignee__status")
|
||||||
|
self.assertEqual(qs.get(), issue)
|
||||||
|
|
||||||
def test_eq(self):
|
def test_eq(self):
|
||||||
self.assertEqual(MyPerson(id=100), Person(id=100))
|
self.assertEqual(MyPerson(id=100), Person(id=100))
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user