mirror of
https://github.com/django/django.git
synced 2025-05-23 07:16:29 +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.
|
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
|
This field must be defined as the model's ``pk`` attribute. If present, Django
|
||||||
create the underlying model table with a composite primary key.
|
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 ``*field_names`` argument is a list of positional field names that compose
|
||||||
the primary key.
|
the primary key.
|
||||||
|
@ -468,9 +468,14 @@ The ``pk`` property
|
|||||||
Regardless of whether you define a primary key field yourself, or let Django
|
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
|
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
|
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
|
field or fields compose the primary key for the model. You can read and set
|
||||||
value, just as you would for any other attribute, and it will update the
|
this value, just as you would for any other attribute, and it will update the
|
||||||
correct field in the model.
|
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
|
Explicitly specifying auto-primary-key values
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
@ -57,8 +57,8 @@ Composite Primary Keys
|
|||||||
The new :class:`django.db.models.CompositePrimaryKey` allows tables to be
|
The new :class:`django.db.models.CompositePrimaryKey` allows tables to be
|
||||||
created with a primary key consisting of multiple fields.
|
created with a primary key consisting of multiple fields.
|
||||||
|
|
||||||
To use a composite primary key, when creating a model set the ``pk`` field to
|
To use a composite primary key, when defining a model set the ``pk`` attribute
|
||||||
be a ``CompositePrimaryKey``::
|
to be a ``CompositePrimaryKey``::
|
||||||
|
|
||||||
from django.db import models
|
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
|
however, defining a primary key consisting of multiple fields is sometimes
|
||||||
necessary.
|
necessary.
|
||||||
|
|
||||||
To use a composite primary key, when creating a model set the ``pk`` field to
|
To use a composite primary key, when defining a model set the ``pk`` attribute
|
||||||
be a :class:`.CompositePrimaryKey`::
|
to be a :class:`.CompositePrimaryKey`::
|
||||||
|
|
||||||
class Product(models.Model):
|
class Product(models.Model):
|
||||||
name = models.CharField(max_length=100)
|
name = models.CharField(max_length=100)
|
||||||
@ -41,8 +41,8 @@ A composite primary key is represented by a ``tuple``:
|
|||||||
>>> item.pk
|
>>> item.pk
|
||||||
(1, "A755H")
|
(1, "A755H")
|
||||||
|
|
||||||
You can assign a ``tuple`` to a composite primary key. This sets the associated
|
You can assign a ``tuple`` to the :attr:`~django.db.models.Model.pk` attribute.
|
||||||
field values.
|
This sets the associated field values:
|
||||||
|
|
||||||
.. code-block:: pycon
|
.. code-block:: pycon
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user