diff options
| author | David Wobrock <david.wobrock@gmail.com> | 2022-05-17 11:32:30 +0200 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2022-05-19 07:53:06 +0200 |
| commit | 4a86883e0a7ed349d7ce3e91bde5e8e321effa1f (patch) | |
| tree | b20e904264cc7766c6d0be90fb482a509f0c5270 /tests | |
| parent | de9c08c0f3d79aba7fafbc5d8dea879d1fc5c5ca (diff) | |
[4.0.x] Fixed #33705 -- Fixed crash when using IsNull() lookup in filters.
Thanks Florian Apolloner for the report.
Thanks Simon Charette for the review.
Backport of 9f5548952906c6ea97200c016734b4f519520a64 from main
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/lookup/tests.py | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/tests/lookup/tests.py b/tests/lookup/tests.py index 55c2907761..f65b6ad396 100644 --- a/tests/lookup/tests.py +++ b/tests/lookup/tests.py @@ -23,6 +23,7 @@ from django.db.models.lookups import ( Exact, GreaterThan, GreaterThanOrEqual, + IsNull, LessThan, LessThanOrEqual, ) @@ -1243,7 +1244,7 @@ class LookupQueryingTests(TestCase): @classmethod def setUpTestData(cls): cls.s1 = Season.objects.create(year=1942, gt=1942) - cls.s2 = Season.objects.create(year=1842, gt=1942) + cls.s2 = Season.objects.create(year=1842, gt=1942, nulled_text_field="text") cls.s3 = Season.objects.create(year=2042, gt=1942) def test_annotate(self): @@ -1325,6 +1326,16 @@ class LookupQueryingTests(TestCase): qs = Season.objects.filter(GreaterThan(F("year"), 1910)) self.assertCountEqual(qs, [self.s1, self.s3]) + def test_isnull_lookup_in_filter(self): + self.assertSequenceEqual( + Season.objects.filter(IsNull(F("nulled_text_field"), False)), + [self.s2], + ) + self.assertCountEqual( + Season.objects.filter(IsNull(F("nulled_text_field"), True)), + [self.s1, self.s3], + ) + def test_filter_lookup_lhs(self): qs = Season.objects.annotate(before_20=LessThan(F("year"), 2000)).filter( before_20=LessThan(F("year"), 1900), |
