Fondamentalmente, ho un modello in cui ho creato una superclasse che molte altre classi condividono, e quindi ciascuna di queste classi ha alcune caratteristiche uniche che differiscono l'una dall'altra. Diciamo che la classe A è la superclasse, e la classe B, C e D sono figli di quella classe.Ereditarietà modello Django E chiavi esterne
Sia la classe B che la classe C possono avere multipli della classe D, tuttavia ho visto che è meglio mettere la relazione di chiave esterna nella classe D, che quindi si riferisce alla sua classe genitore. Ora in altre lingue, potrei semplicemente dire che ha una relazione ForeignKey con la classe A, e quindi il linguaggio riconosce il vero tipo delle classi. Tuttavia, non penso che sia così che funziona con Python.
Qual è il modo migliore di seguire questo problema?
EDIT: Qui è grosso modo quello che voglio dire ...
class A(models.Model):
field = models.TextField()
class B(A):
other = <class specific functionality>
class C(A):
other2 = <different functionality>
class D(A):
#I would like class D to have a foreign key to either B or C, but not both.
In sostanza, classe B e di classe C hanno entrambi classe multipla D's. Ma una particolare classe D appartiene solo a una di esse.
si potrebbe spiegare il motivo per cui avete bisogno di eredità? – Evgeny
C'è una domanda correlata ha alcune belle risposte che possono aiutare: https://stackoverflow.com/questions/1114767/django-model-inheritance-and-foreign-keys – Miranda