Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Fixed #15786 -- Added a regression test for o2o excludes using F().

The issue was reported against 1.3.x but has been fixed since.
  • Loading branch information...
commit c4fdd859ecba0b8e6dac6eca06429e66925722bd 1 parent b0e06c3
@charettes charettes authored
Showing with 21 additions and 2 deletions.
  1. +4 −0 tests/queries/models.py
  2. +17 −2 tests/queries/tests.py
View
4 tests/queries/models.py
@@ -390,6 +390,10 @@ class OneToOneCategory(models.Model):
def __str__(self):
return "one2one " + self.new_name
+class CategoryRelationship(models.Model):
+ first = models.ForeignKey(SimpleCategory, related_name='first_rel')
+ second = models.ForeignKey(SimpleCategory, related_name='second_rel')
+
class NullableName(models.Model):
name = models.CharField(max_length=20, null=True)
View
19 tests/queries/tests.py
@@ -4,7 +4,6 @@
import datetime
from operator import attrgetter
import pickle
-import sys
import unittest
from django.conf import settings
@@ -26,7 +25,8 @@
OneToOneCategory, NullableName, ProxyCategory, SingleObject, RelatedObject,
ModelA, ModelB, ModelC, ModelD, Responsibility, Job, JobResponsibilities,
BaseA, FK1, Identifier, Program, Channel, Page, Paragraph, Chapter, Book,
- MyObject, Order, OrderItem, SharedConnection, Task, Staff, StaffUser)
+ MyObject, Order, OrderItem, SharedConnection, Task, Staff, StaffUser,
+ CategoryRelationship)
class BaseQuerysetTest(TestCase):
def assertValueQuerysetEqual(self, qs, values):
@@ -2452,6 +2452,21 @@ def test_only_orders_with_all_items_having_status_1(self):
Order.objects.exclude(~Q(items__status=1)).distinct(),
['<Order: 1>'])
+class Exclude15786(TestCase):
+ """Regression test for #15786"""
+ def test_ticket15786(self):
+ c1 = SimpleCategory.objects.create(name='c1')
+ c2 = SimpleCategory.objects.create(name='c2')
+ o2o1 = OneToOneCategory.objects.create(category=c1)
+ o2o2 = OneToOneCategory.objects.create(category=c2)
+ rel = CategoryRelationship.objects.create(first=c1, second=c2)
+ self.assertEqual(
+ CategoryRelationship.objects.exclude(
+ first__onetoonecategory=F('second__onetoonecategory')
+ ).get(), rel
+ )
+
+
class NullInExcludeTest(TestCase):
def setUp(self):
NullableName.objects.create(name='i1')
Please sign in to comment.
Something went wrong with that request. Please try again.