Django - иностранные ключи и страница администратора - PullRequest
0 голосов
/ 28 марта 2020

Я пытаюсь отобразить отношения внешнего ключа на странице изменения администратора (т. Е. На странице www.some.url/admin/<app>/<model>/<id>/change/):

У меня есть две модели, связанные между собой посредством отношения внешнего ключа, например:

# models.py

class Bank(models.Model):
    name = models.CharField(max_length=100)

class Branch(models.Model):
    bank = models.ForeignKey('Bank', on_delete=models.CASCADE, related_name='branches')
    name = models.CharField(max_length=100)

И у меня есть модель-администратор, например:

# admin.py

class BankAdmin(admin.ModelAdmin):

    list_display = ('id', 'name',)

Как добавить список филиалов, связанных с данным банком, на странице django -admin-change? Могу ли я добавить что-то в свой класс BankAdmin, чтобы достичь этого?

т.е. если бы я посетил страницу администратора и щелкнул по экземпляру банка (например, www.some.url/admin/<app>/bank/2/change/), я бы хотел увидеть название банка и всех его филиалов, связанных с внешним ключом.

Я обыскивал стекопоток, но нашел решение - пожалуйста, укажите мне правильное направление, если оно существует.

1 Ответ

0 голосов
/ 28 марта 2020

Одним из решений было бы зарегистрировать ссылку в отображении списка BankAdmin, которая указывает на пользовательское представление администратора, отображающее филиалы этого банка. Вы можете сделать это следующим образом:

# admin.py

class BankAdmin(admin.ModelAdmin):

    def link_branches(self, obj):
        return format_html(
            "<a href='/admin/<app>/bank/branches/?id={ bank_id }'> Branches </a>",
            bank_id=obj.id
        )

    list_display = ('id', 'name', 'link_branches')
    admin.site.register(Bank, BankAdmin)

Тогда вам просто нужно создать свой собственный вид и обновить свой urls.py, указав /admin/<app>/bank/branches для этого вида.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...