Django: accesos inversos para claves externas en conflicto

113

Tengo dos modelos de Django que heredan de una clase base:

- Request
    - Inquiry
    - Analysis

La solicitud tiene dos claves foráneas para el modelo de usuario integrado.

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

Por alguna razón recibo el error

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

Todo lo que he leído dice que configurar el related_namedebería evitar el choque, pero sigo recibiendo el mismo error. ¿Alguien puede pensar en por qué estaría sucediendo esto? ¡Gracias!

Robar
fuente
1
¿Puede publicar las definiciones de su modelo, incluyendo Inquiryy Analysisy su relación conRequest
dm03514
enlace actualizado para el nombre relacionado en Django 1.9
Seb

Respuestas:

138

El related_nameaseguraría que los campos no entraran en conflicto entre sí, pero tiene dos modelos, cada uno de los cuales tiene ambos campos. Debe poner el nombre del modelo concreto en cada uno, lo que puede hacer con alguna sustitución de cadena especial :

 create_user = models.ForeignKey(User, related_name='%(class)s_requests_created')
Daniel Roseman
fuente
1
El enlace en su respuesta está muerto.
Matt D
2
@MatthewDrill Envié una edición para corregirlo, mientras tanto intente docs.djangoproject.com/en/1.10/topics/db/models/…
Ivan
¡Gran respuesta! ¡Gracias!
Tms91