mirror of https://github.com/django/django.git
Fixed #35425 -- Avoided INSERT with force_update and explicit pk.
Affected models where the primary key field is defined with a default or db_default, such as UUIDField.
This commit is contained in:
parent
34a503162f
commit
ceea86baa3
|
@ -1088,6 +1088,7 @@ class Model(AltersData, metaclass=ModelBase):
|
||||||
if (
|
if (
|
||||||
not raw
|
not raw
|
||||||
and not force_insert
|
and not force_insert
|
||||||
|
and not force_update
|
||||||
and self._state.adding
|
and self._state.adding
|
||||||
and (
|
and (
|
||||||
(meta.pk.default and meta.pk.default is not NOT_PROVIDED)
|
(meta.pk.default and meta.pk.default is not NOT_PROVIDED)
|
||||||
|
|
|
@ -186,6 +186,12 @@ class ModelInstanceCreationTests(TestCase):
|
||||||
with self.assertNumQueries(1):
|
with self.assertNumQueries(1):
|
||||||
PrimaryKeyWithDefault().save()
|
PrimaryKeyWithDefault().save()
|
||||||
|
|
||||||
|
def test_save_primary_with_default_force_update(self):
|
||||||
|
# An UPDATE attempt is made if explicitly requested.
|
||||||
|
obj = PrimaryKeyWithDefault.objects.create()
|
||||||
|
with self.assertNumQueries(1):
|
||||||
|
PrimaryKeyWithDefault(uuid=obj.pk).save(force_update=True)
|
||||||
|
|
||||||
def test_save_primary_with_db_default(self):
|
def test_save_primary_with_db_default(self):
|
||||||
# An UPDATE attempt is skipped when a primary key has db_default.
|
# An UPDATE attempt is skipped when a primary key has db_default.
|
||||||
with self.assertNumQueries(1):
|
with self.assertNumQueries(1):
|
||||||
|
|
Loading…
Reference in New Issue