/ / Django: i metadati del modello sono ereditati? - Django, modelli django

Django - i metadati del modello sono ereditati? - Django, modelli di django

Ho una gerarchia di classi nella mia models.py. Vorrei che tutte le tabelle attuali che definisco abbiano lo stesso unique_together vincolo. Quindi vorrei mettere questo in Meta classe della classe base da cui tutti ereditano. Ovviamente questa classe base deve anche specificare abstract = True nel suo Meta classe, e non voglio che le classi ereditarie siano astratte.

Devo specificare lo stesso unique_together vincolo più volte, una volta per ogni classe non astratta che eredita dalla base astratta?

risposte:

3 per risposta № 1

basato su documentazione

Quando viene creata una classe base astratta, Djangorende qualsiasi classe Meta interna che hai dichiarato nella classe base disponibile come attributo. Se una classe figlia non dichiara la propria classe Meta, erediterà la Meta del genitore. Se il bambino vuole estendere la classe Meta del genitore, può suddividerla in sottoclasse.

e anche:

Django fa un aggiustamento alla classe Metadi una classe base astratta: prima di installare l'attributo Meta, imposta abstract = False. Ciò significa che i bambini di classi base astratte non diventano automaticamente classi astratte. Naturalmente, puoi creare una classe base astratta che eredita da un'altra classe base astratta. Devi solo ricordare di impostare esplicitamente abstract = True ogni volta.