Qui ci sono i miei modelli schematici:inversa rispetto a più classi che ereditano in Django
class Law(models.Model):
...
class Bill(models.Model):
... # data for a proposed law, or change of an existing law
class PrivateBill(Bill):
... # data for a Bill that was initiated by a parliament member
class GovernmentBill(Bill):
... # data for a Bill that was initiated by the government
E 'possibile e probabile che in futuro mi (o forse qualcun altro) vorrei aggiungere più tipi di Bill.
Ogni Bill deve puntare a una legge (indicando quale legge questo disegno di legge sta per cambiare) e la mia domanda è: Qual è il modo migliore per attuare questo?
Se aggiungo il ForeignKey (legge) a Bill, avrò una relazione da ogni Bill alla legge, ma una legge avrebbe solo una relazione inversa a Bills (bill_set), e non un diversa relazione inversa a ciascun tipo di fattura. Naturalmente sarò in grado di filtrare ogni tipo di fattura per ottenere solo quelli che puntano a una specifica Legge, ma è qualcosa che penso avrò bisogno di usare spesso, quindi penso che avere privatebill_set, governmentbill_set etc renderebbe il codice più leggibile.
Un'altra possibile soluzione è quella di aggiungere la chiave esterna a ciascuna delle classi che ereditano (questo mi avrebbe dato un privatebill_set, governmentbill_set, futurebill_set), ma che sembra peloso perché sarei basandosi su futuri programmatori di ricordare di aggiungere quella relazione.
Come lo risolveresti?
Ottima idea. Grazie. –