Ham*_*mza 10 python django admin django-admin
我正在为正在处理的应用程序定制Django-admin.到目前为止定制工作文件,添加了一些视图.但我想知道如何更改change_list显示中的记录链接以显示信息页而不是更改表单?!
在这篇博文中:http://www.theotherblog.com/Articles/2009/06/02/ extend-the-django-admin-interface/Tom说:
"您可以通过定义函数然后添加my_func.allow_tags = True来在列表视图中添加图像或链接"
我不太明白!!
现在我有配置文件功能,当我点击记录列表中的成员我可以显示它(或添加另一个名为 - 配置文件 - 的按钮),还有如何为每个成员添加链接(编辑:重定向我编辑)该成员的表格).
我怎么能做到这一点?!
Ale*_*erg 23
如果我理解您的问题,您想要将自己的链接添加到列表视图,并且您希望该链接指向您创建的某个信息页面.
为此,请创建一个函数以在Admin对象中返回链接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)
Run Code Online (Sandbox Code Playgroud)
看一下:http://docs.djangoproject.com/en/dev/ref/contrib/admin/,ModelAdmin.list_display part,它说:表示模型属性的字符串.这与callable几乎相同,但在此上下文中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')
Run Code Online (Sandbox Code Playgroud)
所以我想,如果你将这两个方法添加到Person
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
Run Code Online (Sandbox Code Playgroud)
并将PersonAdmin更改为
class PersonAdmin(admin.ModelAdmin):
list_display = ('first_name', 'last_name', 'colored_name', 'profile_link')
Run Code Online (Sandbox Code Playgroud)
然后你完成了
| 归档时间: |
|
| 查看次数: |
10142 次 |
| 最近记录: |