Commit 4ccdf6e5 authored by Helen Sherwood-Taylor's avatar Helen Sherwood-Taylor Committed by Tim Graham
Browse files

Fixed #24041 -- Documented effect of changing a model instance's primary key.

parent 3daa9d60
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -278,8 +278,13 @@ don't need to set ``primary_key=True`` on any of your fields unless you want to
override the default primary-key behavior. For more, see
:ref:`automatic-primary-key-fields`.

``primary_key=True`` implies :attr:`null=False <Field.null>` and :attr:`unique=True <Field.unique>`.
Only one primary key is allowed on an object.
``primary_key=True`` implies :attr:`null=False <Field.null>` and
:attr:`unique=True <Field.unique>`. Only one primary key is allowed on an
object.

The primary key field is read-only. If you change the value of the primary
key on an existing object and then save it, a new object will be created
alongside the old one.

``unique``
----------
+17 −0
Original line number Diff line number Diff line
@@ -213,6 +213,23 @@ ones:
    unless you want to override the default primary-key behavior. For more,
    see :ref:`automatic-primary-key-fields`.

    The primary key field is read-only. If you change the value of the primary
    key on an existing object and then save it, a new object will be created
    alongside the old one. For example::

        from django.db import models

        class Fruit(models.Model):
            name = models.CharField(max_length=100, primary_key=True)

    .. code-block:: pycon

        >>> fruit = Fruit.objects.create(name='Apple')
        >>> fruit.name = 'Pear'
        >>> fruit.save()
        >>> Fruit.objects.values_list('name', flat=True)
        ['Apple', 'Pear']

:attr:`~Field.unique`
    If ``True``, this field must be unique throughout the table.