Django Admin – 设置显示字段



当模型注册到Django的Admin站点时,点击模型名称会显示其对象的列表。

下图显示了Employees模型中对象的列表:

Django Admin Set Fields 1

但是,上面的页面显示的对象形式为Employee object(1),并没有显示namecontact等属性。为了使对象描述更友好,我们需要重写employee模型类中的__str__()方法

为了给出其对象的替代字符串表示,employee类被改写如下:

from django.db import models

class Employee(models.Model):  
   empno = models.CharField(max_length=20)  
   empname = models.CharField(max_length=100)    
   contact = models.CharField(max_length=15)  
   salary = models.IntegerField()
   joined_date = models.DateField(null=True)

   class Meta:  
      db_table = "employee"
    
   def __str__(self):
      return "Name: {}, Contact: {}".format(self.empname, self.contact)

对模型定义进行这些更改,然后刷新admin站点的首页(如果Django服务器尚未运行,请启动它)。

点击MYAPP下的Employees模型以显示employee对象的详细信息:

Django Admin Set Fields 2

如果点击任何对象详情,则会显示一个显示对象属性的表单,您可以在此处更新对象或删除对象。

Django Admin Set Fields 3

您可以使用admin.ModelAdmin对象的“list_display”属性自定义“更改列表页面”,该属性指定在更改列表中显示哪些列。

ModelAdmin类是在admin界面中模型的表示。通常,这些存储在应用程序中的名为admin.py的文件中。

通过继承ModelAdmin类定义EmployeeAdmin类。将list_display属性设置为要显示的字段的元组。

from django.contrib import admin

# Register your models here.
from .models import Employee

class EmployeeAdmin(admin.ModelAdmin):
   list_display = ("empname", "contact", "joined_date")

注册EmployeeAdmin类如下:

admin.site.register(Employee, EmployeeAdmin)

您也可以使用@admin.register()装饰器注册模型:

from django.contrib import admin

# Register your models here.
from .models import Employee

@admin.register(Employee)
class EmployeeAdmin(admin.ModelAdmin):
   list_display = ("empname", "contact", "joined_date")

保存上述更改并刷新Admin站点以显示Employee对象的列表:

Django Admin Set Fields 4

您还可以为列表页面提供搜索功能。在EmployeeAdmin类中添加search_fields属性:

@admin.register(Employee)
class EmployeeAdmin(admin.ModelAdmin):
   list_display = ("empname", "contact", "joined_date")
   search_fields = ("empname__startswith", )

现在列表页面顶部显示了一个搜索字段。搜索基于员工姓名。__startswith修饰符将搜索限制为以搜索参数开头的名称。

Django Admin Set Fields 5

因此,Django Admin界面是完全可定制的。您可以通过在admin类中提供fields属性来设置在更新表单中提供的字段。

广告