Django-admin. 从list_display链接到编辑用户资料

4 投票
3 回答
2735 浏览
提问于 2025-04-17 04:57

我在我的模型里加了一个叫“creator”的方法,像这样:

def creator(self):
        return self.user

然后我在这个模型的Admin类里加了这一行^

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

一切都很好……用户名在那一列显示出来了,但我想把这些名字变成链接,点击后能让我编辑用户的个人资料。 我该怎么做呢? 非常感谢!

3 个回答

0

在Django 2.0中,你不能再使用 allow_tags = True 这个设置了。现在,你需要通过返回 mark_safe("<a href="...">...</a>) 来标记这个字符串是安全的。

0

有一个更好的选择:raw_id_fields

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

下面是它的效果:

在这里输入图片描述

4

首先,把 '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'

(这个还没测试过)

撰写回答