diff options
| author | David Wobrock <david.wobrock@gmail.com> | 2023-12-21 23:20:36 +0100 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2023-12-23 18:33:07 +0100 |
| commit | 9aad44150fa7632b894c8b1d1cb9c6dde131b577 (patch) | |
| tree | 94660e9b8c6e5eb2fd9c9b055f37d8a910b0cf9c /tests | |
| parent | 42c31f867fa75d52bbbb4b39478f982fbe010ae1 (diff) | |
[5.0.x] Fixed #35050 -- Fixed prefixing field names in FilteredRelation().
Thanks Mark Zorn for the report.
Regression in 59f475470494ce5b8cbff816b1e5dafcbd10a3a3.
Backport of 14917c9ae272f47d23401100faa6cefa8e1728bf from main
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/filtered_relation/models.py | 2 | ||||
| -rw-r--r-- | tests/filtered_relation/tests.py | 36 |
2 files changed, 38 insertions, 0 deletions
diff --git a/tests/filtered_relation/models.py b/tests/filtered_relation/models.py index d34a86305f..765d4956e2 100644 --- a/tests/filtered_relation/models.py +++ b/tests/filtered_relation/models.py @@ -36,6 +36,8 @@ class Book(models.Model): related_query_name="book", ) editor = models.ForeignKey(Editor, models.CASCADE) + number_editor = models.IntegerField(default=-1) + editor_number = models.IntegerField(default=-2) generic_author = GenericRelation(Author) state = models.CharField(max_length=9, choices=STATES, default=AVAILABLE) diff --git a/tests/filtered_relation/tests.py b/tests/filtered_relation/tests.py index 5a21a47f36..19714e8443 100644 --- a/tests/filtered_relation/tests.py +++ b/tests/filtered_relation/tests.py @@ -792,6 +792,42 @@ class FilteredRelationTests(TestCase): ).filter(my_books__isnull=True) self.assertSequenceEqual(qs, []) + def test_conditional_expression_rhs_contains_relation_name(self): + qs = Book.objects.annotate( + rel=FilteredRelation( + "editor", + condition=Q(id=1 * F("number_editor")), + ) + ).filter(rel__isnull=True) + self.assertSequenceEqual(qs, []) + + def test_conditional_expression_rhs_startswith_relation_name(self): + qs = Book.objects.annotate( + rel=FilteredRelation( + "editor", + condition=Q(id=1 * F("editor_number")), + ) + ).filter(rel__isnull=True) + self.assertSequenceEqual(qs, []) + + def test_conditional_expression_lhs_startswith_relation_name(self): + qs = Book.objects.annotate( + rel=FilteredRelation( + "editor", + condition=Q(editor_number__gt=1), + ) + ).filter(rel__isnull=True) + self.assertSequenceEqual(qs, []) + + def test_conditional_expression_lhs_contains_relation_name(self): + qs = Book.objects.annotate( + rel=FilteredRelation( + "editor", + condition=Q(number_editor__gt=1), + ) + ).filter(rel__isnull=True) + self.assertSequenceEqual(qs, []) + class FilteredRelationAggregationTests(TestCase): @classmethod |
