Básicamente, tengo un modelo donde he creado una superclase que comparten muchas otras clases, y cada una de esas clases tiene algunas características únicas que difieren entre sí. Digamos que la clase A es la superclase, y la clase B, C y D son hijos de esa clase.Herencia de modelo de Django y claves externas
Tanto la clase B como la clase C pueden tener múltiples clases de clase D, sin embargo, he visto que es mejor poner la relación de clave foránea en la clase D, que luego se refiere a su clase principal. Ahora, en otros idiomas, podría decir simplemente que tiene una relación ForeignKey con la clase A, y luego el lenguaje reconoce el tipo verdadero de las clases. Sin embargo, no creo que sea así como funciona con Python.
¿Cuál es la mejor forma recomendada de resolver este problema?
EDIT: Aquí es más o menos lo que quiero decir ...
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.
Esencialmente, clase B y clase C que ambos tienen múltiples clases D's. Pero una clase particular D solo pertenece a uno de ellos.
¿Podría explicar por qué necesita herencia? – Evgeny
Hay una pregunta relacionada que tiene algunas buenas respuestas que pueden ayudar: https://stackoverflow.com/questions/1114767/django-model-inheritance-and-foreign-keys – Miranda