summaryrefslogtreecommitdiff
path: root/tests/foreign_object
diff options
context:
space:
mode:
authorTomo Otsuka <totsuka@hearsaycorp.com>2015-12-22 23:22:54 +0000
committerTim Graham <timograham@gmail.com>2015-12-24 07:33:55 -0500
commit8b6974a6857bdc48ad50bf21527b840c27648891 (patch)
treef597900caf74f0096cd77bd8ce49e4280c850806 /tests/foreign_object
parent91cd4d8e8c1e8593fc091abc11e05fa5d9514601 (diff)
downloaddjango-8b6974a6857bdc48ad50bf21527b840c27648891.tar.gz
Fixed #25972 -- Restored support for the isnull lookup with ForeignObject.
Diffstat (limited to 'tests/foreign_object')
-rw-r--r--tests/foreign_object/models/person.py13
-rw-r--r--tests/foreign_object/tests.py12
2 files changed, 19 insertions, 6 deletions
diff --git a/tests/foreign_object/models/person.py b/tests/foreign_object/models/person.py
index eeb3da832e..26d88007fb 100644
--- a/tests/foreign_object/models/person.py
+++ b/tests/foreign_object/models/person.py
@@ -56,19 +56,19 @@ class Membership(models.Model):
date_joined = models.DateTimeField(default=datetime.datetime.now)
invite_reason = models.CharField(max_length=64, null=True)
person_id = models.IntegerField()
- group_id = models.IntegerField()
+ group_id = models.IntegerField(blank=True, null=True)
# Relation Fields
person = models.ForeignObject(
Person,
- from_fields=['membership_country', 'person_id'],
- to_fields=['person_country_id', 'id'],
+ from_fields=['person_id', 'membership_country'],
+ to_fields=['id', 'person_country_id'],
on_delete=models.CASCADE,
)
group = models.ForeignObject(
Group,
- from_fields=['membership_country', 'group_id'],
- to_fields=['group_country', 'id'],
+ from_fields=['group_id', 'membership_country'],
+ to_fields=['id', 'group_country'],
on_delete=models.CASCADE,
)
@@ -76,7 +76,8 @@ class Membership(models.Model):
ordering = ('date_joined', 'invite_reason')
def __str__(self):
- return "%s is a member of %s" % (self.person.name, self.group.name)
+ group_name = self.group.name if self.group_id else 'NULL'
+ return "%s is a member of %s" % (self.person.name, group_name)
class Friendship(models.Model):
diff --git a/tests/foreign_object/tests.py b/tests/foreign_object/tests.py
index 5291275b25..bcdadc6d6d 100644
--- a/tests/foreign_object/tests.py
+++ b/tests/foreign_object/tests.py
@@ -395,6 +395,18 @@ class MultiColumnFKTests(TestCase):
objs = [Person(name="abcd_%s" % i, person_country=self.usa) for i in range(0, 5)]
Person.objects.bulk_create(objs, 10)
+ def test_isnull_lookup(self):
+ Membership.objects.create(membership_country=self.usa, person=self.bob, group_id=None)
+ Membership.objects.create(membership_country=self.usa, person=self.bob, group=self.cia)
+ self.assertQuerysetEqual(
+ Membership.objects.filter(group__isnull=True),
+ ['<Membership: Bob is a member of NULL>']
+ )
+ self.assertQuerysetEqual(
+ Membership.objects.filter(group__isnull=False),
+ ['<Membership: Bob is a member of CIA>']
+ )
+
class TestModelCheckTests(SimpleTestCase):