外观
ModelAdmin.list_display
list_display可指定显示在列表页面上的字段。如:
list_display = ['first_name', 'last_name']若不设置这个属性,admin站点将只显示一页,内容为每个对象__str__()返回的内容。
在list_display中,可以设置4种值:模型字段、函数、ModelAdmin的属性和模型的属性。
- 设置模型字段
class ArticleAdmin(admin.ModelAdmin):
list.display = ['title', 'content', 'publish_time']
- 设置函数
def upper_case_name(obj):
return ("%s %s" % (obj.id, obj.title)).upper()
class ArticleAdmin(admin.ModelAdmin):
list_display = (upper_case_name,)
upper_case_name.short_description = 'Name'
- 设置ModelAdmin的属性
类似函数调用,通过反射获取函数名,相当于换了种写法。
class ArticleAdmin(model.ModelAdmin):
list_display = ('upper_case_name',)
def upp_case_name(self, obj):
return ("%s %s" % (obj.id, obj.title)).upper()
upper_case_name.short_description = 'Name'- 设置模型的属性
类似第二种,但是此处的self是模型实例,引用的是模型属性。在blog/article/models.py中新增属性,代码如下:
class Article(models.Model):
id = models.IntegerField(primary_key=True)
title = models.CharField(max_length=20, verbose_name='标题')
content = models.TextField(verbose_name='内容')
publish_time = models.DateTimeField(verbose_name='发布日期')
user = models.ForeignKey(User, on_delete=models.CASCADE)
def __repr__(self):
return Article.title
def short_content(self):
return self.content[50:]
short_content.short_description = 'content'在blog/article/admin.py文件中将ArticleAdmin类的list_display属性设置short_content,代码如下:
class ArticleAdmin(admin.ModelAdmin):
list_display = ('id', 'title', 'short_content')运行结果如下:

注:
- 对于ForeignKey字段,显示的将是其__str__()方法的值。
- 不支持ManyToMany字段,需要自定义方法。
- 对于BooleanField或NullBooleanField字段,会用on/off图标代替True/False。
- 如果给list_display提供的值是一个模型的、ModelAdmin的或者可调用的方法,默认情况下会自动对返回结果进行HTML转义。