#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>)
.