diff options
| author | Malcolm Tredinnick <malcolm.tredinnick@gmail.com> | 2007-12-09 08:01:26 +0000 |
|---|---|---|
| committer | Malcolm Tredinnick <malcolm.tredinnick@gmail.com> | 2007-12-09 08:01:26 +0000 |
| commit | 13d3162aaf7fce11c06d447f397e32b7648ae199 (patch) | |
| tree | a30fa6faa1396fafc8d5fdbcf88bb2e74360ded3 /tests | |
| parent | 3064a211bfcaac4ba0dda1ae21b10a5b766e3152 (diff) | |
queryset-refactor: Added a test to show that various Q() combinations work when the same field with different lookup types are combined. Refs #4289.
git-svn-id: http://code.djangoproject.com/svn/django/branches/queryset-refactor@6901 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/regressiontests/queries/models.py | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/tests/regressiontests/queries/models.py b/tests/regressiontests/queries/models.py index 9f55f277ec..7c0b83096f 100644 --- a/tests/regressiontests/queries/models.py +++ b/tests/regressiontests/queries/models.py @@ -80,6 +80,12 @@ class Cover(models.Model): def __unicode__(self): return self.title +class Number(models.Model): + num = models.IntegerField() + + def __unicode__(self): + return unicode(self.num) + # Some funky cross-linked models for testing a couple of infinite recursion # cases. class X(models.Model): @@ -154,6 +160,13 @@ will be rank3, rank2, rank1. >>> c2 = Cover(title="second", item=i2) >>> c2.save() +>>> n1 = Number(num=4) +>>> n1.save() +>>> n2 = Number(num=8) +>>> n2.save() +>>> n3 = Number(num=12) +>>> n3.save() + Bug #1050 >>> Item.objects.filter(tags__isnull=True) [<Item: three>] @@ -199,6 +212,24 @@ Bug #2080, #3592 >>> Author.objects.filter(Q(item__name='three') | Q(report__name='r3')) [<Author: a2>] +Bug #4289 +A slight variation on the above theme: restricting the choices by the lookup +constraints. +>>> Number.objects.filter(num__lt=4) +[] +>>> Number.objects.filter(num__gt=8, num__lt=12) +[] +>>> Number.objects.filter(num__gt=8, num__lt=13) +[<Number: 12>] +>>> Number.objects.filter(Q(num__lt=4) | Q(num__gt=8, num__lt=12)) +[] +>>> Number.objects.filter(Q(num__gt=8, num__lt=12) | Q(num__lt=4)) +[] +>>> Number.objects.filter(Q(num__gt=8) & Q(num__lt=12) | Q(num__lt=4)) +[] +>>> Number.objects.filter(Q(num__gt=7) & Q(num__lt=12) | Q(num__lt=4)) +[<Number: 8>] + Bug #6074 Merging two empty result sets shouldn't leave a queryset with no constraints (which would match everything). @@ -427,5 +458,6 @@ order_by() and filter() calls. # Filter those items that have exactly one tag attached. >>> Item.objects.extra(select={'count': 'select count(*) from queries_item_tags where queries_item_tags.item_id = queries_item.id'}).filter(count=1) [<Item: four>] + """} |
