📅  最后修改于: 2023-12-03 14:44:01.099000             🧑  作者: Mango
在 Django Admin 中,list_display
是一个非常有用的选项,它决定了在展示管理页面列表时,需要展示哪些字段。以下是 list_display
的介绍和常用方法:
list_display
?list_display
是 Django Admin 中一个可选的 ModelAdmin 选项,它可以指定在列表页面要展示的字段。如果没有指定,则 Django 会默认展示 __str__
方法所返回的值。
list_display
的用法指定简单的字段
list_display
最简单的用法就是:
class BookAdmin(admin.ModelAdmin):
list_display = ('title', 'author', 'published_date')
这样 Django 会在 Book 列表中展示 title
, author
, published_date
这三个字段。
指定 Model 方法
除了直接指定字段,还可以指定 Model 中的方法。方法需要返回一个值,然后在 list_display
中指定方法的名称即可。
class BookAdmin(admin.ModelAdmin):
def is_published(self, obj):
return obj.published_date is not None
list_display = ('title', 'author', 'is_published')
在上面的例子中,is_published()
方法返回的是一个布尔值。Django 会在显示列表时调用该方法,并显示它的返回值。
指定自定义列标题
默认情况下,Django 会在列表的表头中使用字段名称作为标题,但可以通过在字段名和展示名称之间添加 "__"
来指定自定义标题。
class BookAdmin(admin.ModelAdmin):
list_display = ('title', 'author', 'published_date__published')
在上述例子中,Django 会展示 published
作为 published_date
的列表头。
指定排序
list_display
还支持排序功能,您可以在字段名称前添加 -
或者省略 +
符号来控制升序或者降序。
class BookAdmin(admin.ModelAdmin):
list_display = ('title', 'author', '-published_date')
如果想要指定多个排序条件,请用逗号隔开。例如:
class BookAdmin(admin.ModelAdmin):
list_display = ('title', 'author', '-published_date', 'price')
ordering = ('-published_date', 'price')
这样,Django 会以 published_date
降序排列,如果有相同的日期,则按 price
升序排列。
除了上述用法,还有其它一些高级的 list_display
用法,例如使用 django.utils.html.format_html()
返回带样式的 HTML、使用自定义格式化字符串等。这里不做详细探讨,可以访问 Django 官方文档 了解更多详情。