Как в Django Admin реализовать ссылочный переход на формы/страницы в changelist?

Добавьте метод ModelAdmin в list_display и возвращайте безопасно сформированную ссылку через format_html(). URL формы строят reverse() по имени admin-маршрута, а не конкатенацией строки.

Короткий ответ

Что ответить на собеседовании

Добавьте метод ModelAdmin в list_display и возвращайте безопасно сформированную ссылку через format_html(). URL формы строят reverse() по имени admin-маршрута, а не конкатенацией строки.

Подробный разбор

Ответ с пояснениями

Добавьте метод ModelAdmin в list_display и возвращайте безопасно сформированную ссылку через format_html(). URL формы строят reverse() по имени admin-маршрута, а не конкатенацией строки.

Пример метода для существующей модели app.Item:

@admin.display(description='Открыть')
def edit_link(self, obj):
    url = reverse('admin:app_item_change', args=[obj.pk])
    return format_html('<a href="{}">Изменить</a>', url)

Нужны импорты admin, reverse и format_html, а edit_link включают в list_display. Для обычной ссылки на объект часто достаточно list_display_links. Собственные страницы подключают через get_urls и admin_site.admin_view; проверка доступа обязательна, наличие ссылки прав не выдаёт.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее