95 votes

Message d'erreur Django "Ajouter un argument related_name à la définition"

D:\zjm_code\basic_project>python manage.py syncdb
Error: One or more models did not validate:
topics.topic: Accessor for field 'content_type' clashes with related field 'Cont
entType.topic_set'. Add a related_name argument to the definition for 'content_t
ype'.
topics.topic: Accessor for field 'creator' clashes with related field 'User.crea
ted_topics'. Add a related_name argument to the definition for 'creator'.
topics.topic: Reverse query name for field 'creator' clashes with related field
'User.created_topics'. Add a related_name argument to the definition for 'creato
r'.
topicsMap.topic: Accessor for field 'content_type' clashes with related field 'C
ontentType.topic_set'. Add a related_name argument to the definition for 'conten
t_type'.
topicsMap.topic: Accessor for field 'creator' clashes with related field 'User.c
reated_topics'. Add a related_name argument to the definition for 'creator'.
topicsMap.topic: Reverse query name for field 'creator' clashes with related fie
ld 'User.created_topics'. Add a related_name argument to the definition for 'cre
ator'.

146voto

John Mee Points 12004

Vous avez un certain nombre de clés étrangères pour lesquelles django est incapable de générer des noms uniques.

Vous pouvez vous aider en ajoutant des arguments "related_name" aux définitions de champ de clé étrangère dans vos modèles. Par exemple :

content_type = ForeignKey(Topic, related_name='topic_content_type')

Voir ici pour plus. http://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.ForeignKey.related_name

2voto

Somiya Jain Points 11

Si vos modèles héritent du même modèle parent, vous devez définir un nom_lié unique dans la clé ForeignKey du parent. Par exemple :

author = models.ForeignKey('accounts.User', related_name='%(app_label)s_%(class)s_related')

C'est mieux expliqué dans th

1voto

bitFez Points 60

J'ai eu un problème similaire quand j'essayais de coder une solution pour une table qui retirait les noms des équipes de football de la même table. Ma table ressemblait à ceci :

hometeamID = models.ForeignKey(Team, null=False, on_delete=models.CASCADE)
awayteamID = models.ForeignKey(Team, null=False, on_delete=models.CASCADE)

apporter les modifications ci-dessous a résolu mon problème :

hometeamID = models.ForeignKey(Team, null=False, on_delete=models.CASCADE,related_name='home_team')
awayteamID = models.ForeignKey(Team, null=False, on_delete=models.CASCADE,related_name='away_team')

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X