mirror of
https://github.com/django/django.git
synced 2025-03-12 18:30:48 +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.
|
for a single table.
|
||||||
"""
|
"""
|
||||||
meta = cls._meta
|
meta = cls._meta
|
||||||
|
pk_fields = meta.pk_fields
|
||||||
non_pks_non_generated = [
|
non_pks_non_generated = [
|
||||||
f
|
f
|
||||||
for f in meta.local_concrete_fields
|
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:
|
if update_fields:
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
from django.db import connection
|
||||||
from django.test import TestCase
|
from django.test import TestCase
|
||||||
|
|
||||||
from .models import Comment, Tenant, Token, User
|
from .models import Comment, Tenant, Token, User
|
||||||
@ -45,7 +46,11 @@ class CompositePKUpdateTests(TestCase):
|
|||||||
email = "user9314@example.com"
|
email = "user9314@example.com"
|
||||||
user = User.objects.get(pk=self.user_1.pk)
|
user = User.objects.get(pk=self.user_1.pk)
|
||||||
user.email = email
|
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()
|
user.refresh_from_db()
|
||||||
self.assertEqual(user.email, email)
|
self.assertEqual(user.email, email)
|
||||||
user = User.objects.get(pk=self.user_1.pk)
|
user = User.objects.get(pk=self.user_1.pk)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user