C'è un modo per fare solo una query di una super classe quindi ottenere un elenco di tutte le rispettive sottoclassi in django?[duplicato]

StackOverflow https://stackoverflow.com//questions/9674046

Domanda

Possibile duplicazione:
Ereditarietà del modello Django query di una tabella centrale

Seguendo i documenti officail trovati qui
https://docs.djangoproject.com/en/dev/topics/db/models/#multi-table-inheritance

Vedo che posso interrogare Posto che è un Super di Ristorante via

p = Place.objects.filter(name="Bob's Cafe")

Quindi a quel punto c'è un modo per controllare e vedere se gli oggetti restituiti sono anche di tipo sub class Restaurant e in tal caso accedere ai loro campi sub class?

Al momento tutto quello che posso dire è che tutti gli oggetti restituiti sono di classe Place e le loro proprietà e metodi di sottoclasse non sono disponibili poiché l'oggetto non viene lanciato come sua sottoclasse.

Se questa metodologia non è possibile, qual è la migliore pratica che è andata cercando di astrarre una super classe e ridurre al minimo il sovraccarico delle query quando si cerca di ottenere un elenco contenente tutti i modelli di sottoclasse?Capisco in teoria che potrei fare una query di ogni sottoclasse quindi combinare l'elenco insieme, ma poi dovrei fare di più se volessi ordinare quell'elenco per dire una data.

È stato utile?

Soluzione

Quindi a quel punto c'è un modo per controllare e vedere se gli oggetti restituiti sono anche di tipo sub class Restaurant e in tal caso accedere ai loro campi sub class?

Se hai interrogato il modello di posizione, gli oggetti restituiti sono istanze di posizione che non hanno alcuna conoscenza di sottoclassi associate a MTI.È necessario fornire un campo sulla superclasse per collegarsi verso il basso alla sottoclasse.Vedere Creazione di un design di ereditarietà multi-tabella generico in Django

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top