mirror of
https://github.com/django/django.git
synced 2025-04-05 14:06:42 +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:
parent
b721f12760
commit
f054045973
@ -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.
|
||||
|
@ -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
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
@ -57,8 +57,8 @@ Composite Primary Keys
|
||||
The new :class:`django.db.models.CompositePrimaryKey` allows tables to be
|
||||
created with a primary key consisting of multiple fields.
|
||||
|
||||
To use a composite primary key, when creating a model set the ``pk`` field to
|
||||
be a ``CompositePrimaryKey``::
|
||||
To use a composite primary key, when defining a model set the ``pk`` attribute
|
||||
to be a ``CompositePrimaryKey``::
|
||||
|
||||
from django.db import models
|
||||
|
||||
|
@ -11,8 +11,8 @@ In most cases, a single primary key should suffice. In database design,
|
||||
however, defining a primary key consisting of multiple fields is sometimes
|
||||
necessary.
|
||||
|
||||
To use a composite primary key, when creating a model set the ``pk`` field to
|
||||
be a :class:`.CompositePrimaryKey`::
|
||||
To use a composite primary key, when defining a model set the ``pk`` attribute
|
||||
to be a :class:`.CompositePrimaryKey`::
|
||||
|
||||
class Product(models.Model):
|
||||
name = models.CharField(max_length=100)
|
||||
@ -41,8 +41,8 @@ A composite primary key is represented by a ``tuple``:
|
||||
>>> item.pk
|
||||
(1, "A755H")
|
||||
|
||||
You can assign a ``tuple`` to a composite primary key. This sets the associated
|
||||
field values.
|
||||
You can assign a ``tuple`` to the :attr:`~django.db.models.Model.pk` attribute.
|
||||
This sets the associated field values:
|
||||
|
||||
.. code-block:: pycon
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user