Инлайны в админке 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 и дизайна вашей модели.

Вернуться на верх