diff options
| author | Simon Charette <charette.s@gmail.com> | 2025-06-03 22:34:39 -0400 |
|---|---|---|
| committer | Sarah Boyce <42296566+sarahboyce@users.noreply.github.com> | 2025-06-04 10:46:49 +0200 |
| commit | 08187c94ed02c45ad40a32244dedeaa7ac71ca87 (patch) | |
| tree | 10ace1a29c0c4fd5724998d683ad4f1e598ad0c1 /tests/prefetch_related | |
| parent | c075508b4de8edf9db553b409f8a8ed2f26ecead (diff) | |
Fixed #36432 -- Fixed a prefetch_related crash on related target subclass queryset.
Regression in 626d77e52a3f247358514bcf51c761283968099c.
Refs #36116.
Thanks Cornelis Poppema for the excellent report.
Diffstat (limited to 'tests/prefetch_related')
| -rw-r--r-- | tests/prefetch_related/models.py | 4 | ||||
| -rw-r--r-- | tests/prefetch_related/tests.py | 13 |
2 files changed, 17 insertions, 0 deletions
diff --git a/tests/prefetch_related/models.py b/tests/prefetch_related/models.py index e12eabdfb2..405e9bba00 100644 --- a/tests/prefetch_related/models.py +++ b/tests/prefetch_related/models.py @@ -280,6 +280,10 @@ class Employee(models.Model): ordering = ["id"] +class SelfDirectedEmployee(Employee): + pass + + # Ticket #19607 diff --git a/tests/prefetch_related/tests.py b/tests/prefetch_related/tests.py index 49acfdd7c8..bd37ca0ec3 100644 --- a/tests/prefetch_related/tests.py +++ b/tests/prefetch_related/tests.py @@ -37,6 +37,7 @@ from .models import ( Qualification, Reader, Room, + SelfDirectedEmployee, TaggedItem, Teacher, WordEntry, @@ -433,6 +434,18 @@ class PrefetchRelatedTests(TestDataMixin, TestCase): authors[1].active_favorite_authors, [self.author3, self.author4] ) + def test_prefetch_queryset_child_class(self): + employee = SelfDirectedEmployee.objects.create(name="Foo") + employee.boss = employee + employee.save() + with self.assertNumQueries(2): + retrieved_employee = SelfDirectedEmployee.objects.prefetch_related( + Prefetch("boss", SelfDirectedEmployee.objects.all()) + ).get() + with self.assertNumQueries(0): + self.assertEqual(retrieved_employee, employee) + self.assertEqual(retrieved_employee.boss, retrieved_employee) + class RawQuerySetTests(TestDataMixin, TestCase): def test_basic(self): |
