Django: odwrotne metody dostępu do kolizji kluczy obcych

113

Mam dwa modele Django, które dziedziczą z klasy bazowej:

- Request
    - Inquiry
    - Analysis

Żądanie ma dwa klucze obce do wbudowanego modelu użytkownika.

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

Z jakiegoś powodu otrzymuję błąd

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

Wszystko, co przeczytałem, mówi, że ustawienie related_namepowinno zapobiec kolizji, ale nadal otrzymuję ten sam błąd. Czy ktoś może pomyśleć, dlaczego tak się dzieje? Dzięki!

Obrabować
źródło
1
Czy możesz zamieścić swoje definicje modelu, w tym Inquiryi Analysisich stosunek doRequest
dm03514
zaktualizowany link do nazwy pokrewnej w Django 1.9
SEB

Odpowiedzi:

138

related_nameBy upewnić się, że pola nie są sprzeczne ze sobą, ale masz dwa modele, z których każdy ma obu tych dziedzinach. W każdym z nich musisz umieścić nazwę konkretnego modelu, co możesz zrobić za pomocą specjalnego podstawienia ciągów :

 create_user = models.ForeignKey(User, related_name='%(class)s_requests_created')
Daniel Roseman
źródło
1
Link w Twojej odpowiedzi jest martwy.
Matt D,
2
@MatthewDrill Przesłałem edycję, aby to poprawić, w międzyczasie wypróbuj docs.djangoproject.com/en/1.10/topics/db/models/ ...
Ivan
Świetna odpowiedź! Dziękuję Ci!
Tms91