Как перейти к связанному объекту модели через list_display в админке Django?

У меня есть модель Comment, которая связана с моделью Poller через FK отношения. Могу ли я как-то перейти к этому связанному объекту через интерфейс администратора Django из обзора комментария?

# Models.py

class Comment(models.Model):
    """
    A Class for comments made by users to a specific Poller
    """
    poller = models.ForeignKey(Poller, on_delete=models.CASCADE, related_name='PollerComment')
    user = models.ForeignKey(Account, on_delete=models.CASCADE)
    vote = models.ForeignKey(Vote, on_delete=models.CASCADE)
# Admin.py

@admin.register(Comment)
class PollerCommentAdmin(admin.ModelAdmin):
    list_display = ('user', 'created_on', 'poller', 'comment', 'flag_count', 'upvote_count',
                    'downvote_count', 'is_public', 'is_removed')

Теперь я хочу сделать колонку 'poller' кликабельной, что перенаправит меня на этот объект poller в админке.

Вам необходимо заменить poller в list_display на пользовательский метод, возвращающий нужную ссылку.


from django.utils.safestring import mark_safe
# [...]

@admin.register(Comment)
class PollerCommentAdmin(admin.ModelAdmin):
    list_display = (
        'user', 'created_on', 'get_poller_link', 'comment', 'flag_count',
        'upvote_count','downvote_count', 'is_public', 'is_removed'
    )

    def get_poller_link(self, obj):
        # assuming poller is in the same app...
        return mark_safe('<a href="../poller/%s">%s</a>' % (obj.poller_id, obj.poller)

    get_poller_link.short_description = "Header to display"
    get_poller_link.admin_order_field = 'poller_id' # or another
Вернуться на верх