/ / Django - Werden Modellmetadaten vererbt? - Django, Django-Modelle

Django - werden Modellmetadaten vererbt? - Django, Django-Modelle

Ich habe eine Klassenhierarchie in meinem models.py. Ich möchte, dass alle von mir definierten Tabellen dasselbe haben unique_together Zwang. Also möchte ich das in die Meta Klasse der Basisklasse, von der sie alle erben. Natürlich muss diese Basisklasse auch angegeben werden abstract = True in seinem Meta Klasse, und ich möchte nicht, dass die erbenden Klassen abstrakt sind.

Muss ich dasselbe angeben? unique_together mehrfach einschränken, einmal für jede nicht abstrakte Klasse, die von der abstrakten Basis erbt?

Antworten:

3 für die Antwort № 1

beyogen auf Dokumentation

Wenn eine abstrakte Basisklasse erstellt wird, Djangomacht jede in der Basisklasse deklarierte innere Meta-Klasse als Attribut verfügbar. Wenn eine untergeordnete Klasse keine eigene Meta-Klasse deklariert, erbt sie die Meta der übergeordneten Klasse. Wenn das Kind die Meta-Klasse des Elternteils erweitern möchte, kann es die Unterklasse

und auch:

Django nimmt eine Anpassung an die Meta-Klasse voreiner abstrakten Basisklasse: Vor der Installation des Meta-Attributs wird abstract = False festgelegt. Dies bedeutet, dass Kinder abstrakter Basisklassen nicht automatisch selbst zu abstrakten Klassen werden. Natürlich können Sie eine abstrakte Basisklasse erstellen, die von einer anderen abstrakten Basisklasse erbt. Sie müssen lediglich daran denken, jedes Mal explizit abstract = True zu setzen.