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!


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

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.