diff options
| author | Bendeguz Csirmaz <csirmazbendeguz@gmail.com> | 2025-01-10 08:47:10 +0100 |
|---|---|---|
| committer | Sarah Boyce <42296566+sarahboyce@users.noreply.github.com> | 2025-01-10 11:43:38 +0100 |
| commit | 585160586336f3bcd7b694f53cf10db73c56981c (patch) | |
| tree | 1b0b15b82112d8fdfd1421cd4430e4ff28730586 /tests/composite_pk | |
| parent | 8287fd49151b1b99045efbf3de8ef911d63c5f45 (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.py | 6 | ||||
| -rw-r--r-- | tests/composite_pk/test_create.py | 14 |
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() |
