1
0
mirror of https://github.com/django/django.git synced 2025-10-31 09:41:08 +00:00

[5.2.x] Fixed #36109 -- Fixed RecursionError when stacking FilteredRelation joins.

Backport of 8eca4077f6 from main.
This commit is contained in:
Peter DeVita
2025-01-17 13:22:24 -05:00
committed by Sarah Boyce
parent b285cc787e
commit 720ef7a867
3 changed files with 25 additions and 0 deletions

View File

@@ -582,6 +582,28 @@ class FilteredRelationTests(TestCase):
lambda x: (x.author, x.book_title, x.preferred_by_author_pk),
)
def test_three_level_nested_chained_relations(self):
borrower = Borrower.objects.create(name="Jenny")
Reservation.objects.create(
borrower=borrower,
book=self.book1,
state=Reservation.STOPPED,
)
qs = Author.objects.annotate(
my_books=FilteredRelation("book"),
my_reserved_books=FilteredRelation(
"my_books__reservation",
condition=Q(my_books__reservation__state=Reservation.STOPPED),
),
my_readers=FilteredRelation(
"my_reserved_books__borrower",
condition=Q(my_reserved_books__borrower=borrower),
),
)
self.assertSequenceEqual(
qs.filter(my_readers=borrower).values_list("name", flat=True), ["Alice"]
)
def test_deep_nested_foreign_key(self):
qs = (
Book.objects.annotate(