Added a test for negated Q object querying
The added test is from the patch in ticket #19672 (written by Ian Kelly). Fixed #19672, refs #19849.
This commit is contained in:
parent
10f9ba046f
commit
e8fc3f3783
|
@ -64,6 +64,7 @@ class Annotation(models.Model):
|
||||||
class ExtraInfo(models.Model):
|
class ExtraInfo(models.Model):
|
||||||
info = models.CharField(max_length=100)
|
info = models.CharField(max_length=100)
|
||||||
note = models.ForeignKey(Note)
|
note = models.ForeignKey(Note)
|
||||||
|
value = models.IntegerField(null=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
ordering = ['info']
|
ordering = ['info']
|
||||||
|
|
|
@ -52,8 +52,8 @@ class Queries1Tests(BaseQuerysetTest):
|
||||||
|
|
||||||
# Create these out of order so that sorting by 'id' will be different to sorting
|
# Create these out of order so that sorting by 'id' will be different to sorting
|
||||||
# by 'info'. Helps detect some problems later.
|
# by 'info'. Helps detect some problems later.
|
||||||
self.e2 = ExtraInfo.objects.create(info='e2', note=n2)
|
self.e2 = ExtraInfo.objects.create(info='e2', note=n2, value=41)
|
||||||
e1 = ExtraInfo.objects.create(info='e1', note=self.n1)
|
e1 = ExtraInfo.objects.create(info='e1', note=self.n1, value=42)
|
||||||
|
|
||||||
self.a1 = Author.objects.create(name='a1', num=1001, extra=e1)
|
self.a1 = Author.objects.create(name='a1', num=1001, extra=e1)
|
||||||
self.a2 = Author.objects.create(name='a2', num=2002, extra=e1)
|
self.a2 = Author.objects.create(name='a2', num=2002, extra=e1)
|
||||||
|
@ -1106,6 +1106,13 @@ class Queries1Tests(BaseQuerysetTest):
|
||||||
self.assertTrue(str(q3.query).count('LEFT OUTER JOIN') == 1)
|
self.assertTrue(str(q3.query).count('LEFT OUTER JOIN') == 1)
|
||||||
self.assertTrue(str(q3.query).count('INNER JOIN') == 0)
|
self.assertTrue(str(q3.query).count('INNER JOIN') == 0)
|
||||||
|
|
||||||
|
def test_ticket19672(self):
|
||||||
|
self.assertQuerysetEqual(
|
||||||
|
Report.objects.filter(Q(creator__isnull=False) &
|
||||||
|
~Q(creator__extra__value=41)),
|
||||||
|
['<Report: r1>']
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class Queries2Tests(TestCase):
|
class Queries2Tests(TestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
|
|
Loading…
Reference in New Issue