From 22bcd3a1d88add6e4cf2c4451ede8d1ae142dedd Mon Sep 17 00:00:00 2001 From: ovalseven8 Date: Tue, 6 Mar 2018 17:18:49 +0100 Subject: [PATCH] Fixed #29192 -- Corrected docs regarding overriding fields from abstract base classes. --- docs/topics/db/models.txt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/topics/db/models.txt b/docs/topics/db/models.txt index 4294c05ec2..74ec4dc230 100644 --- a/docs/topics/db/models.txt +++ b/docs/topics/db/models.txt @@ -897,9 +897,7 @@ information into a number of other models. You write your base class and put ``abstract=True`` in the :ref:`Meta ` class. This model will then not be used to create any database table. Instead, when it is used as a base class for other models, its -fields will be added to those of the child class. It is an error to -have fields in the abstract base class with the same name as those in -the child (and Django will raise an exception). +fields will be added to those of the child class. An example:: @@ -920,6 +918,9 @@ The ``Student`` model will have three fields: ``name``, ``age`` and model, since it is an abstract base class. It does not generate a database table or have a manager, and cannot be instantiated or saved directly. +Fields inherited from abstract base classes can be overridden with another +field or value, or be removed with ``None``. + For many uses, this type of model inheritance will be exactly what you want. It provides a way to factor out common information at the Python level, while still only creating one database table per child model at the database level.