From 630b9df42f771e90d9beb1766d4e7aa2107bd82d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anssi=20K=C3=A4=C3=A4ri=C3=A4inen?= Date: Mon, 19 Aug 2013 14:07:51 +0300 Subject: [PATCH] Fixed #12567 -- Incorrect SQL in model inheritance case An isnull lookup produced incorrect SQL. This was already fixed earlier, so only tests added. --- tests/model_inheritance/tests.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/tests/model_inheritance/tests.py b/tests/model_inheritance/tests.py index 0ba6a15e5d..a2013a6b68 100644 --- a/tests/model_inheritance/tests.py +++ b/tests/model_inheritance/tests.py @@ -323,3 +323,27 @@ class ModelInheritanceTests(TestCase): # Equality doesn't transfer in multitable inheritance. self.assertNotEqual(Place(id=1), Restaurant(id=1)) self.assertNotEqual(Restaurant(id=1), Place(id=1)) + + def test_ticket_12567(self): + r = Restaurant.objects.create(name='n1', address='a1') + s = Supplier.objects.create(name='s1', address='a2') + self.assertQuerysetEqual( + Place.objects.filter(supplier__isnull=False), + [Place.objects.get(pk=s.pk)], + lambda x: x + ) + self.assertQuerysetEqual( + Place.objects.filter(supplier__isnull=True), + [Place.objects.get(pk=r.pk)], + lambda x: x + ) + self.assertQuerysetEqual( + Place.objects.exclude(supplier__isnull=False), + [Place.objects.get(pk=r.pk)], + lambda x: x + ) + self.assertQuerysetEqual( + Place.objects.exclude(supplier__isnull=True), + [Place.objects.get(pk=s.pk)], + lambda x: x + )