Django: обратные аксессоры для столкновения внешних ключей


у меня есть две модели Django, которые наследуют от базового класса:

- Request
    - Inquiry
    - Analysis

запрос имеет два внешних ключа к встроенной модели пользователя.

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

по какой-то причине я получаю ошибку

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

все, что я читал говорит, что задание related_name должен предотвратить столкновение, но я все еще получаю ту же ошибку. Может ли кто-нибудь подумать, почему это происходит? Спасибо!

1 74

1 ответ:

related_name гарантирует, что поля не конфликтуют друг с другом, но у вас есть две модели, каждая из которых имеет оба этих поля. Вам нужно поставить имя конкретной модели в каждом из них, что вы можете сделать с некоторыми специальными замена строк:

 create_user = models.ForeignKey(User, related_name='%(class)s_requests_created')