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 № 1basato 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.