fields - ¿Cómo puedo tener dos claves externas para el mismo modelo en Django?
django forms (4)
Quiero tener dos claves foráneas para el mismo modelo:
class Test(models.model):
example1 = models.ForeignKey(Example)
example2 = models.ForeignKey(Example)
Recibo errores como:
El descriptor de acceso del campo ''ejemplo 1'' choca con el campo relacionado ''Ejemplo.prueba_juego''. Agregue un argumento related_name a la definición de ''example1''.
Django usa magia de pitón para definir relaciones entre modelos, algunas de las cuales implican usar el nombre de los modelos en las relaciones (de ahí viene la ''prueba'' en ''test__set''). Lo que está sucediendo, supongo, es que es tratando de poner "test__set" en el modelo de Ejemplo dos veces, una vez por cada clave foránea que haya definido.
El mensaje de error sugiere algo para probar: defina un argumento related_name
(anulando uno de esos ''test_set''s'') que puede usar en lugar de autogenerar dos nombres conflictivos.
Más información here : la página ha sido eliminada
Página actual relacionada con las relaciones modelo: https://docs.djangoproject.com/en/2.0/ref/models/fields/#module-django.db.models.fields.related
En django 2.0 Prueba esto:
user = models.ForeignKey(User, on_delete=models.PROTECT, null=True, related_name=''user'')
paper = models.ForeignKey(paperRecord, on_delete=models.PROTECT, null=True, related_name=''paper'')
Intenta usar related_name
:
class Test(models.model):
example1 = models.ForeignKey(''Example'', related_name=''example1'')
example2 = models.ForeignKey(''Example'', related_name=''example2'')
Simplemente haz lo que el mensaje de error te dice que hagas, y si no estás seguro de lo que eso significa, consulta la documentación para related_name
.