summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorSaJH <wogur981208@gmail.com>2025-04-15 03:06:49 +0900
committerSarah Boyce <42296566+sarahboyce@users.noreply.github.com>2025-04-17 17:23:06 +0200
commit1831f7733d3ef03d1ca7fac3e8d9f4c5e3e3375e (patch)
tree8afb3f55f29eb7f3d3b1db92d36c19dfbf78a1fb /tests
parentd755a98b8438c10f3cff61303ceb1fe16d414e9b (diff)
Fixed #36326 -- Added CompositePrimaryKey support in QuerySet.raw().
Signed-off-by: SaJH <wogur981208@gmail.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/composite_pk/tests.py16
1 files changed, 15 insertions, 1 deletions
diff --git a/tests/composite_pk/tests.py b/tests/composite_pk/tests.py
index 18fa53d9c0..5dea23c9f2 100644
--- a/tests/composite_pk/tests.py
+++ b/tests/composite_pk/tests.py
@@ -11,7 +11,7 @@ except ImportError:
from django import forms
from django.core import serializers
-from django.core.exceptions import FieldError
+from django.core.exceptions import FieldDoesNotExist, FieldError
from django.db import IntegrityError, connection
from django.db.models import CompositePrimaryKey
from django.forms import modelform_factory
@@ -158,6 +158,20 @@ class CompositePKTests(TestCase):
users = User.objects.values_list("pk").order_by("pk")
self.assertNotIn('AS "pk"', str(users.query))
+ def test_raw(self):
+ users = User.objects.raw("SELECT * FROM composite_pk_user")
+ self.assertEqual(len(users), 1)
+ user = users[0]
+ self.assertEqual(user.tenant_id, self.user.tenant_id)
+ self.assertEqual(user.id, self.user.id)
+ self.assertEqual(user.email, self.user.email)
+
+ def test_raw_missing_PK_fields(self):
+ query = "SELECT tenant_id, email FROM composite_pk_user"
+ msg = "Raw query must include the primary key"
+ with self.assertRaisesMessage(FieldDoesNotExist, msg):
+ list(User.objects.raw(query))
+
def test_only(self):
users = User.objects.only("pk")
self.assertSequenceEqual(users, (self.user,))