1
0
mirror of https://github.com/django/django.git synced 2025-10-24 06:06:09 +00:00

Refs #36070 -- Referred to pk as an attribute when a composite primary key is defined.

This is to avoid confusion that a field is often associated with having
a single associated database column.
This commit is contained in:
Jacob Walls
2025-01-14 16:43:49 +01:00
committed by Sarah Boyce
parent b721f12760
commit f054045973
4 changed files with 16 additions and 11 deletions

View File

@@ -722,8 +722,8 @@ isn't defined.
A virtual field used for defining a composite primary key.
This field must be defined as the model's ``pk`` field. If present, Django will
create the underlying model table with a composite primary key.
This field must be defined as the model's ``pk`` attribute. If present, Django
will create the underlying model table with a composite primary key.
The ``*field_names`` argument is a list of positional field names that compose
the primary key.

View File

@@ -468,9 +468,14 @@ The ``pk`` property
Regardless of whether you define a primary key field yourself, or let Django
supply one for you, each model will have a property called ``pk``. It behaves
like a normal attribute on the model, but is actually an alias for whichever
attribute is the primary key field for the model. You can read and set this
value, just as you would for any other attribute, and it will update the
correct field in the model.
field or fields compose the primary key for the model. You can read and set
this value, just as you would for any other attribute, and it will update the
correct fields in the model.
.. versionchanged:: 5.2
Support for the primary key to be composed of multiple fields was added via
``CompositePrimaryKey``.
Explicitly specifying auto-primary-key values
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~