summaryrefslogtreecommitdiff
path: root/tests/one_to_one
diff options
context:
space:
mode:
authorTim Graham <timograham@gmail.com>2016-05-28 09:14:02 -0400
committerTim Graham <timograham@gmail.com>2016-06-04 08:04:51 -0400
commite2296e7f0acf9c50868ab997ba565c1f47beb45b (patch)
treeb4765517f4bd76194a36a33a6a44b62ce06f3e7b /tests/one_to_one
parent54febdb8be7c9793caae9c781f4d6b7cbbdcd900 (diff)
downloaddjango-e2296e7f0acf9c50868ab997ba565c1f47beb45b.tar.gz
Fixed #26667 -- Fixed a regression in queries on a OneToOneField that has to_field and primary_key=True.
Thanks Simon Charette for review.
Diffstat (limited to 'tests/one_to_one')
-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 7e8c9c5dc3..2cb6568221 100644
--- a/tests/one_to_one/tests.py
+++ b/tests/one_to_one/tests.py
@@ -6,8 +6,8 @@ from django.utils.deprecation import RemovedInDjango20Warning
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,
)
@@ -530,3 +530,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)