1
0
mirror of https://github.com/django/django.git synced 2025-10-23 21:59:11 +00:00

Fixed #373 -- Added CompositePrimaryKey.

Thanks Lily Foote and Simon Charette for reviews and mentoring
this Google Summer of Code 2024 project.

Co-authored-by: Simon Charette <charette.s@gmail.com>
Co-authored-by: Lily Foote <code@lilyf.org>
This commit is contained in:
Bendeguz Csirmaz
2024-04-07 10:32:16 +08:00
committed by Sarah Boyce
parent 86661f2449
commit 978aae4334
43 changed files with 3078 additions and 29 deletions

View File

@@ -181,6 +181,7 @@ Model fields
* **fields.E011**: ``<database>`` does not support default database values with
expressions (``db_default``).
* **fields.E012**: ``<expression>`` cannot be used in ``db_default``.
* **fields.E013**: ``CompositePrimaryKey`` must be named ``pk``.
* **fields.E100**: ``AutoField``\s must set primary_key=True.
* **fields.E110**: ``BooleanField``\s do not accept null values. *This check
appeared before support for null values was added in Django 2.1.*
@@ -417,6 +418,8 @@ Models
* **models.W040**: ``<database>`` does not support indexes with non-key
columns.
* **models.E041**: ``constraints`` refers to the joined field ``<field name>``.
* **models.E042**: ``<field name>`` cannot be included in the composite
primary key.
* **models.W042**: Auto-created primary key used when not defining a primary
key type, by default ``django.db.models.AutoField``.
* **models.W043**: ``<database>`` does not support indexes on expressions.

View File

@@ -707,6 +707,23 @@ or :class:`~django.forms.NullBooleanSelect` if :attr:`null=True <Field.null>`.
The default value of ``BooleanField`` is ``None`` when :attr:`Field.default`
isn't defined.
``CompositePrimaryKey``
-----------------------
.. versionadded:: 5.2
.. class:: CompositePrimaryKey(*field_names, **options)
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.
The ``*field_names`` argument is a list of positional field names that compose
the primary key.
See :doc:`/topics/composite-primary-key` for more details.
``CharField``
-------------
@@ -1615,6 +1632,8 @@ not an instance of ``UUID``.
hyphens, because PostgreSQL and MariaDB 10.7+ store them in a hyphenated
uuid datatype type.
.. _relationship-fields:
Relationship fields
===================