mirror of
https://github.com/django/django.git
synced 2025-11-19 11:15:44 +00:00
Refs #27222 -- Refreshed GeneratedFields values on save() initiated update.
This required implementing UPDATE RETURNING machinery that heavily borrows from the INSERT one.
This commit is contained in:
parent
c48904a225
commit
55a0073b3b
12 changed files with 213 additions and 59 deletions
|
|
@ -1315,12 +1315,6 @@ materialized view.
|
|||
PostgreSQL only supports persisted columns. Oracle only supports virtual
|
||||
columns.
|
||||
|
||||
.. admonition:: Refresh the data
|
||||
|
||||
Since the database computes the value, the object must be reloaded to
|
||||
access the new value after :meth:`~Model.save`, for example, by using
|
||||
:meth:`~Model.refresh_from_db`.
|
||||
|
||||
.. admonition:: Database limitations
|
||||
|
||||
There are many database-specific restrictions on generated fields that
|
||||
|
|
@ -1338,6 +1332,12 @@ materialized view.
|
|||
.. _PostgreSQL: https://www.postgresql.org/docs/current/ddl-generated-columns.html
|
||||
.. _SQLite: https://www.sqlite.org/gencol.html#limitations
|
||||
|
||||
.. versionchanged:: 6.0
|
||||
|
||||
``GeneratedField``\s are now automatically refreshed from the database on
|
||||
backends that support it (SQLite, PostgreSQL, and Oracle) and marked as
|
||||
deferred otherwise.
|
||||
|
||||
``GenericIPAddressField``
|
||||
-------------------------
|
||||
|
||||
|
|
|
|||
|
|
@ -331,6 +331,12 @@ Models
|
|||
value from the non-null input values. This is supported on SQLite, MySQL,
|
||||
Oracle, and PostgreSQL 16+.
|
||||
|
||||
* :class:`~django.db.models.GeneratedField`\s are now refreshed from the
|
||||
database after :meth:`~django.db.models.Model.save` on backends that support
|
||||
the ``RETURNING`` clause (SQLite, PostgreSQL, and Oracle). On backends that
|
||||
don't support it (MySQL and MariaDB), the fields are marked as deferred to
|
||||
trigger a refresh on subsequent accesses.
|
||||
|
||||
Pagination
|
||||
~~~~~~~~~~
|
||||
|
||||
|
|
@ -420,6 +426,9 @@ backends.
|
|||
``returning_params`` to be provided just like
|
||||
``fetch_returned_insert_columns()`` did.
|
||||
|
||||
* If the database supports ``UPDATE … RETURNING`` statements, backends can set
|
||||
``DatabaseFeatures.can_return_rows_from_update=True``.
|
||||
|
||||
Dropped support for MariaDB 10.5
|
||||
--------------------------------
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue