summaryrefslogtreecommitdiff
path: root/tests/composite_pk
diff options
context:
space:
mode:
authorBendeguz Csirmaz <csirmazbendeguz@gmail.com>2025-01-10 08:47:10 +0100
committerSarah Boyce <42296566+sarahboyce@users.noreply.github.com>2025-01-10 11:43:38 +0100
commit585160586336f3bcd7b694f53cf10db73c56981c (patch)
tree1b0b15b82112d8fdfd1421cd4430e4ff28730586 /tests/composite_pk
parent8287fd49151b1b99045efbf3de8ef911d63c5f45 (diff)
Fixed #36064 -- Skipped an UPDATE when adding a model instance with a composite primary key with default values.
Diffstat (limited to 'tests/composite_pk')
-rw-r--r--tests/composite_pk/models/tenant.py6
-rw-r--r--tests/composite_pk/test_create.py14
2 files changed, 16 insertions, 4 deletions
diff --git a/tests/composite_pk/models/tenant.py b/tests/composite_pk/models/tenant.py
index 810fb50db7..9817b40fac 100644
--- a/tests/composite_pk/models/tenant.py
+++ b/tests/composite_pk/models/tenant.py
@@ -1,3 +1,5 @@
+import uuid
+
from django.db import models
@@ -46,8 +48,8 @@ class Comment(models.Model):
class Post(models.Model):
pk = models.CompositePrimaryKey("tenant_id", "id")
- tenant = models.ForeignKey(Tenant, on_delete=models.CASCADE)
- id = models.UUIDField()
+ tenant = models.ForeignKey(Tenant, on_delete=models.CASCADE, default=1)
+ id = models.UUIDField(default=uuid.uuid4)
class TimeStamped(models.Model):
diff --git a/tests/composite_pk/test_create.py b/tests/composite_pk/test_create.py
index a007952f66..38ad9690fb 100644
--- a/tests/composite_pk/test_create.py
+++ b/tests/composite_pk/test_create.py
@@ -1,6 +1,7 @@
+from django.db import IntegrityError
from django.test import TestCase, skipUnlessDBFeature
-from .models import Tenant, User
+from .models import Post, Tenant, User
class CompositePKCreateTests(TestCase):
@@ -8,7 +9,7 @@ class CompositePKCreateTests(TestCase):
@classmethod
def setUpTestData(cls):
- cls.tenant = Tenant.objects.create()
+ cls.tenant = Tenant.objects.create(id=1)
cls.user = User.objects.create(
tenant=cls.tenant,
id=1,
@@ -151,3 +152,12 @@ class CompositePKCreateTests(TestCase):
self.assertEqual(user.email, fields["defaults"]["email"])
self.assertEqual(user.email, f"user{user.id}@example.com")
self.assertEqual(count + 1, User.objects.count())
+
+ def test_save_default_pk_not_set(self):
+ with self.assertNumQueries(1):
+ Post().save()
+
+ def test_save_default_pk_set(self):
+ post = Post.objects.create()
+ with self.assertRaises(IntegrityError):
+ Post(tenant_id=post.tenant_id, id=post.id).save()