summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/one_to_one/models.py6
-rw-r--r--tests/one_to_one/tests.py10
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)