Django-admin. Ссылка для редактирования профиля пользователя из list_display

#python #django #django-admin

#python #джанго #django-администратор

Вопрос:

Я вставил «creator»-метод в свою модель следующим образом:

 def creator(self):
        return self.user
 

Затем я бы добавил эту строку в Admin-класс этой модели ^

 list_display = ('title','created_at','votes','creator')
 

И все было хорошо … имена пользователей отображаются в этом столбце, но я хочу создать ссылки из этих имен, которые перенаправят меня на редактирование этих профилей пользователей.
Как я могу это сделать?
Большое спасибо!

Ответ №1:

Сначала добавьте ‘user_link’ в list_display. Затем добавьте это в свой ModelAdmin:

 def user_link(self, obj):
        return '<a href="%s">%s</a>' % (
            urlresolvers.reverse('admin:auth_user_change', args=(obj.user.id,)), obj.user
            )
user_link.allow_tags = True
user_link.short_description = 'User'
 

(непроверенный)

Комментарии:

1. Спасибо! Вы мне очень помогли!

Ответ №2:

Есть лучшая альтернатива: raw_id_fields .

 @admin.register(Ticket)
class AdminTicket(admin.ModelAdmin):
    fields = ['user', 'subject', 'message']
    raw_id_fields = ['user']
 

Вот как это будет выглядеть:

введите описание изображения здесь

Ответ №3:

В Django 2.0 вы allow_tags = True больше не можете использовать. Вместо этого вам нужно пометить строку как безопасную, вернув mark_safe("<a href="...">...</a>) .