diff options
author | Tomo Otsuka <totsuka@hearsaycorp.com> | 2015-12-22 23:22:54 +0000 |
---|---|---|
committer | Tim Graham <timograham@gmail.com> | 2015-12-24 07:33:55 -0500 |
commit | 8b6974a6857bdc48ad50bf21527b840c27648891 (patch) | |
tree | f597900caf74f0096cd77bd8ce49e4280c850806 /tests/foreign_object | |
parent | 91cd4d8e8c1e8593fc091abc11e05fa5d9514601 (diff) | |
download | django-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.py | 13 | ||||
-rw-r--r-- | tests/foreign_object/tests.py | 12 |
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): |