web-dev-qa-db-fra.com

Django: accesseurs inversés pour le conflit de clés étrangères

J'ai deux Django modèles qui héritent d'une classe de base:

- Request
    - Inquiry
    - Analysis

Request a deux clés étrangères au modèle utilisateur intégré.

create_user = models.ForeignKey(User, related_name='requests_created')
assign_user = models.ForeignKey(User, related_name='requests_assigned')

Pour une raison quelconque, je reçois l'erreur

Reverse accessor for 'Analysis.assign_user' clashes with reverse accessor for 'Inquiry.assign_user'.

Tout ce que j'ai lu dit que le réglage du related_name devrait empêcher le choc, mais je reçois toujours la même erreur. Quelqu'un peut-il penser à pourquoi cela se produirait? Merci!

90
Rob

Related_name garantit que les champs ne sont pas en conflit, mais vous avez deux modèles, chacun contenant les deux champs. Vous devez mettre le nom du modèle concret dans chacun d'eux, ce que vous pouvez faire avec des caractères spéciaux substitution de chaînes :

 create_user = models.ForeignKey(User, related_name='%(class)s_requests_created')
112
Daniel Roseman