Инлайны в админке Django: один инлайн для нескольких внешних ключей
У меня есть модель, которая хранит разговоры следующим образом:
class Conversation:
sender_user = models.ForeignKey("test_app.User", on_delete=models.PROTECT,
related_name="conv_starter_user")
recipient_user = models.ForeignKey("test_app.User", on_delete=models.PROTECT,
related_name="conv_recipient_user")
В нем дважды ссылаются на модель User.
Я хотел бы иметь возможность зайти в Django Admin и увидеть раздел под названием 'Conversations', в котором будут перечислены все разговоры, в которых участвует пользователь, как в качестве инициатора, так и в качестве получателя. В настоящее время я создаю два отдельных инлайна ConversationRecipientInline и ConversationSenderInline, которые добавляю в админку пользователя. Это разделяет представление Conversation на два, что не идеально.
Если у вас есть несколько внешних ключей к одной и той же модели, которую вы хотите представить как инлайн в админке, вы должны указать один внешний ключ с параметром fk_name
в подклассе InlineModelAdmin
. Поэтому вы не сможете добиться желаемого с помощью InlineModelAdmin
и дизайна вашей модели.