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

2024-04-26 09:29:02 发布

您现在位置:Python中文网/ 问答频道 /正文

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

在这篇博文中:http://www.theotherblog.com/Articles/2009/06/02/ 扩展django管理界面/Tom说:

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

我完全不明白!!

现在我有profile函数,当我点击 记录列表中的成员我可以显示它(或添加另一个按钮 称为-Profile-,也就是如何为每个成员添加链接(编辑: 重定向我以编辑此成员的表单)。

我怎么能做到?!


Tags: django函数com视图应用程序http编辑表单
2条回答

如果我理解你的问题,你想添加你自己的链接到列表视图,你想该链接指向一些你已经创建的信息页面。

为此,创建一个函数来返回管理对象中的链接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)

看一下:http://docs.djangoproject.com/en/dev/ref/contrib/admin/,ModelAdmin.list_display部分,它显示:表示模型上属性的字符串。这与可调用的行为几乎相同,但在此上下文中的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 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

并将PersonAdmin更改为

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

那你就完了

相关问题 更多 >