Django: acessadores reversos para conflito de chaves estrangeiras

113

Eu tenho dois modelos Django que herdam de uma classe base:

- Request
    - Inquiry
    - Analysis

A solicitação possui duas chaves estrangeiras para o modelo de usuário integrado.

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

Por algum motivo, estou recebendo o erro

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

Tudo o que li diz que definir o related_namedeve evitar o conflito, mas continuo recebendo o mesmo erro. Alguém consegue pensar por que isso estaria acontecendo? Obrigado!

Roubar
fonte
1
Você pode por favor postar suas definições de modelo, incluindo Inquirye Analysise sua relação comRequest
dm03514
link atualizado para o nome relacionado no Django 1.9
Seb

Respostas:

138

O related_nameasseguraria que os campos não foram conflitantes entre si, mas você tem dois modelos, cada um dos quais tem ambos os campos. Você precisa colocar o nome do modelo concreto em cada um, o que pode ser feito com alguma substituição de string especial :

 create_user = models.ForeignKey(User, related_name='%(class)s_requests_created')
Daniel Roseman
fonte
1
O link em sua resposta está morto.
Matt D
2
@MatthewDrill Enviei uma edição para corrigi-lo. Enquanto isso, tente docs.djangoproject.com/en/1.10/topics/db/models/…
Ivan
Ótima resposta! Obrigado!
Tms91