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!


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')

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.