diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/one_to_one/models.py | 6 | ||||
| -rw-r--r-- | tests/one_to_one/tests.py | 10 |
2 files changed, 13 insertions, 3 deletions
diff --git a/tests/one_to_one/models.py b/tests/one_to_one/models.py index 2742fb186e..0f4aa70f6c 100644 --- a/tests/one_to_one/models.py +++ b/tests/one_to_one/models.py @@ -83,7 +83,7 @@ class MultiModel(models.Model): class Target(models.Model): - name = models.CharField(max_length=50) + name = models.CharField(max_length=50, unique=True) class Pointer(models.Model): @@ -98,6 +98,10 @@ class HiddenPointer(models.Model): target = models.OneToOneField(Target, models.CASCADE, related_name='hidden+') +class ToFieldPointer(models.Model): + target = models.OneToOneField(Target, models.CASCADE, to_field='name', primary_key=True) + + # Test related objects visibility. class SchoolManager(models.Manager): def get_queryset(self): diff --git a/tests/one_to_one/tests.py b/tests/one_to_one/tests.py index ee5d7415e3..380dca00d5 100644 --- a/tests/one_to_one/tests.py +++ b/tests/one_to_one/tests.py @@ -5,8 +5,8 @@ from django.test import TestCase from .models import ( Bar, Director, Favorites, HiddenPointer, ManualPrimaryKey, MultiModel, - Place, Pointer, RelatedModel, Restaurant, School, Target, UndergroundBar, - Waiter, + Place, Pointer, RelatedModel, Restaurant, School, Target, ToFieldPointer, + UndergroundBar, Waiter, ) @@ -505,3 +505,9 @@ class OneToOneTests(TestCase): r = Restaurant.objects.first() r2 = Restaurant.objects.filter(pk__exact=r).first() self.assertEqual(r, r2) + + def test_primary_key_to_field_filter(self): + target = Target.objects.create(name='foo') + pointer = ToFieldPointer.objects.create(target=target) + self.assertQuerysetEqual(ToFieldPointer.objects.filter(target=target), [pointer], lambda x: x) + self.assertQuerysetEqual(ToFieldPointer.objects.filter(pk__exact=pointer), [pointer], lambda x: x) |
