📜  list_display (1)

📅  最后修改于: 2023-12-03 14:44:01.099000             🧑  作者: Mango

Django Admin 中的 list_display

在 Django Admin 中,list_display 是一个非常有用的选项,它决定了在展示管理页面列表时,需要展示哪些字段。以下是 list_display 的介绍和常用方法:

什么是 list_display

list_display 是 Django Admin 中一个可选的 ModelAdmin 选项,它可以指定在列表页面要展示的字段。如果没有指定,则 Django 会默认展示 __str__ 方法所返回的值。

list_display 的用法
  1. 指定简单的字段

    list_display 最简单的用法就是:

    class BookAdmin(admin.ModelAdmin):
        list_display = ('title', 'author', 'published_date')
    

    这样 Django 会在 Book 列表中展示 title, author, published_date 这三个字段。

  2. 指定 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 会在显示列表时调用该方法,并显示它的返回值。

  3. 指定自定义列标题

    默认情况下,Django 会在列表的表头中使用字段名称作为标题,但可以通过在字段名和展示名称之间添加 "__" 来指定自定义标题。

    class BookAdmin(admin.ModelAdmin):
        list_display = ('title', 'author', 'published_date__published')
    

    在上述例子中,Django 会展示 published 作为 published_date 的列表头。

  4. 指定排序

    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 官方文档 了解更多详情。