diff --git a/docs/releases/1.9.7.txt b/docs/releases/1.9.7.txt
index 2f55557..0afddcf 100644
--- a/docs/releases/1.9.7.txt
+++ b/docs/releases/1.9.7.txt
@@ -20,3 +20,6 @@ Bugfixes
 
 * Fixed ``on_commit`` callbacks execution order when callbacks make
   transactions (:ticket:`26627`).
+
+* Fixed a regression in queries on a ``OneToOneField`` that has ``to_field``
+  and ``primary_key=True`` (:ticket:`26667`).
diff --git a/tests/one_to_one/models.py b/tests/one_to_one/models.py
index 2742fb1..bd2e5e2 100644
--- a/tests/one_to_one/models.py
+++ b/tests/one_to_one/models.py
@@ -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 7e8c9c5..6e524ec 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,8 @@ 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()
+        pointer = ToFieldPointer.objects.create(target=target)
+        self.assertQuerysetEqual(ToFieldPointer.objects.filter(target=target), [pointer], lambda x: x)
