mirror of
https://github.com/django/django.git
synced 2025-03-12 10:22:37 +00:00
Fixed #36074 -- Excluded composite primary key fields on save() updates.
This commit is contained in:
parent
fc28550fe4
commit
af6336f2c8
@ -1091,10 +1091,11 @@ class Model(AltersData, metaclass=ModelBase):
|
||||
for a single table.
|
||||
"""
|
||||
meta = cls._meta
|
||||
pk_fields = meta.pk_fields
|
||||
non_pks_non_generated = [
|
||||
f
|
||||
for f in meta.local_concrete_fields
|
||||
if not f.primary_key and not f.generated
|
||||
if f not in pk_fields and not f.generated
|
||||
]
|
||||
|
||||
if update_fields:
|
||||
|
@ -1,3 +1,4 @@
|
||||
from django.db import connection
|
||||
from django.test import TestCase
|
||||
|
||||
from .models import Comment, Tenant, Token, User
|
||||
@ -45,7 +46,11 @@ class CompositePKUpdateTests(TestCase):
|
||||
email = "user9314@example.com"
|
||||
user = User.objects.get(pk=self.user_1.pk)
|
||||
user.email = email
|
||||
user.save()
|
||||
with self.assertNumQueries(1) as ctx:
|
||||
user.save()
|
||||
sql = ctx[0]["sql"]
|
||||
self.assertEqual(sql.count(connection.ops.quote_name("tenant_id")), 1)
|
||||
self.assertEqual(sql.count(connection.ops.quote_name("id")), 1)
|
||||
user.refresh_from_db()
|
||||
self.assertEqual(user.email, email)
|
||||
user = User.objects.get(pk=self.user_1.pk)
|
||||
|
Loading…
x
Reference in New Issue
Block a user