Esta vez creo que no soy yo el estúpido sino un conflicto real. Tengo el código de abajo (simplificado):Django syncdb conflictivo related_name cuando se usa herencia y ForeignKey
from django.db import models
class Alpha(models.Model):
relation = models.ForeignKey('Delta', related_name = 'reverse_relation', blank = True, null = True)
class Meta:
abstract = True
class Beta(Alpha):
pass
class Gamma(Alpha):
pass
class Delta(models.Model):
pass
El problema es que Delta.reverse_relation podría hacer referencia a una instancia de Beta o una instancia de Gamma. Tendría que proporcionar de algún modo varios valores related_name (o uno que dependa del nombre de la clase). Creo que el problema está claro, pero para estar completo, el error (al ejecutar syncdb): app.beta: Accesor para el campo 'relation' choques con el campo relacionado 'Delta.reverse_relation'. Agregue un argumento related_name a la definición de 'relación'.
app.beta: El nombre de la consulta inversa para el campo 'relación' choca con el campo relacionado 'Delta.reverse_relation'. Agregue un argumento related_name a la definición de 'relación'.
app.gamma: Accesor para el campo 'relación' choca con el campo relacionado 'Delta.reverse_relation'. Agregue un argumento related_name a la definición de 'relación'.
app.gamma: El nombre de la consulta inversa para el campo 'relación' choca con el campo relacionado 'Delta.reverse_relation'. Agregue un argumento related_name a la definición de 'relación'.
¿Es posible colocar ForeignKey en el Alpha padre, o es la única forma de cortar y pegar este código en Beta y Gamma? Prefiero no hacer eso porque de alguna manera se derrota el punto de herencia si no puedo definir en el padre la mitad de los campos que comparten todos los niños.
¡Cualquier ayuda está muy mal aplicada!
(Si alguien puede comentar con esto los mensajes de error que no están en una caja de código Voy a arreglar eso.)
encontrado mi propia pregunta a través de Google de nuevo. Ocurre más de lo que me gustaría admitir. – Mark