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!


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

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.