diff --git a/tests/queries/models.py b/tests/queries/models.py index 523b58c..714ca3f 100644 --- a/tests/queries/models.py +++ b/tests/queries/models.py @@ -264,6 +264,14 @@ class Related(models.Model): custom = models.ForeignKey(CustomPk, models.CASCADE) +class RelatedNull(models.Model): + custom = models.ForeignKey(CustomPk, models.CASCADE, null=True) + name = models.CharField(max_length=20) + + def __str__(self): + return self.name + + class CustomPkTag(models.Model): id = models.CharField(max_length=20, primary_key=True) custom_pk = models.ManyToManyField(CustomPk) diff --git a/tests/queries/tests.py b/tests/queries/tests.py index e40ab1f..9b13969 100644 --- a/tests/queries/tests.py +++ b/tests/queries/tests.py @@ -26,7 +26,7 @@ from .models import ( Member, ModelA, ModelB, ModelC, ModelD, MyObject, NamedCategory, Node, Note, NullableName, Number, ObjectA, ObjectB, ObjectC, OneToOneCategory, Order, OrderItem, Page, Paragraph, Person, Plaything, PointerA, Program, - ProxyCategory, ProxyObjectA, ProxyObjectB, Ranking, Related, + ProxyCategory, ProxyObjectA, ProxyObjectB, Ranking, Related, RelatedNull, RelatedIndividual, RelatedObject, Report, ReservedName, Responsibility, School, SharedConnection, SimpleCategory, SingleObject, SpecialCategory, Staff, StaffUser, Student, Tag, Task, Ticket21203Child, Ticket21203Parent, @@ -3813,3 +3813,17 @@ class Ticket23622Tests(TestCase): Ticket23605A.objects.filter(qx), [a2], lambda x: x ) + +class Ticket26983Tests(TestCase): + def test_ticket_26983(self): + custom = CustomPk.objects.create(name="pk") + RelatedNull.objects.create(name="null") + RelatedNull.objects.create(name="not null", custom=custom) + self.assertQuerysetEqual( + RelatedNull.objects.filter(custom__isnull=False), + [''] + ) + self.assertQuerysetEqual( + RelatedNull.objects.filter(custom__isnull=True), + [''] + )