Python Django管理员:如何在记录更改列表中显示指向对象信息页面的链接而不是编辑表单?

Python Django管理员:如何在记录更改列表中显示指向对象信息页面的链接而不是编辑表单?,python,django,django-admin,admin,Python,Django,Django Admin,Admin,我正在为我正在使用的应用程序定制Django管理员。所以 到目前为止,自定义正在工作文件中,添加了一些视图。但我是 想知道如何将change_list display中的记录链接更改为 显示信息页面而不是更改表单 在这篇博文中: 扩展django管理界面/Tom说: “您可以通过定义 函数,然后添加my_func.allow_tags=True“ 我还没有完全理解 现在我有配置文件功能,当我点击 记录列表中的成员我可以显示它(或添加另一个按钮 名为-Profile-,以及如何为每个成员添加链接(

我正在为我正在使用的应用程序定制Django管理员。所以 到目前为止,自定义正在工作文件中,添加了一些视图。但我是 想知道如何将change_list display中的记录链接更改为 显示信息页面而不是更改表单

在这篇博文中: 扩展django管理界面/Tom说:

“您可以通过定义 函数,然后添加my_func.allow_tags=True“

我还没有完全理解

现在我有配置文件功能,当我点击 记录列表中的成员我可以显示它(或添加另一个按钮 名为-Profile-,以及如何为每个成员添加链接(编辑: 重定向我以编辑此成员的表单)


我怎么能做到

如果我正确理解您的问题,您希望将自己的链接添加到列表视图,并且希望该链接指向您创建的某个信息页面

为此,创建一个函数以返回管理对象中的链接HTML。然后在列表中使用该函数。像这样:

class ModelAdmin(admin.ModelAdmin):
    def view_link(self):
        return u"<a href='view/%d/'>View</a>" % self.id
    view_link.short_description = ''
    view_link.allow_tags = True
    list_display = ('id', view_link)
类ModelAdmin(admin.ModelAdmin):
def视图链接(自):
返回u“%self.id”
查看链接。简短描述=“”
view\u link.allow\u tags=True
列表显示=('id',视图链接)
看一看:,ModelAdmin.list\u显示部分,它说:表示模型上属性的字符串。这与可调用的行为几乎相同,但在此上下文中self是模型实例。下面是一个完整的模型示例:

class Person(models.Model):
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)
    color_code = models.CharField(max_length=6)

def colored_name(self):
    return '<span style="color: #%s;">%s %s</span>' % (self.color_code, self.first_name, self.last_name)
colored_name.allow_tags = True

class PersonAdmin(admin.ModelAdmin):
    list_display = ('first_name', 'last_name', 'colored_name')

然后你完成了

谢谢这就是我要找的:谢谢。。。不得不做一个小修改:
def view\u链接(self,obj):
注意,在Django 2+中,不再支持allow\u标记。而是将返回的字符串包装在
django.utils.safestring
中的
mark_safe()
中。
def get_absolute_url(self):
    return '/profiles/%s/' % (self.id)

def profile_link(self):
    return '<a href="%s">%s</a>' % (self.get_absolute_url(), self.username)
profile_link.allow_tags = True
class PersonAdmin(admin.ModelAdmin):
    list_display = ('first_name', 'last_name', 'colored_name', 'profile_link')