Django-04-Django admin页面

Django自带的后台管理是其特色之一,可以让我们快速便捷管理数据。后台管理可以在各个app的admin.py文件中进行控制。

-----基本设置-----

1. 应用注册

若要把app应用显示在后台管理中,需要在admin.py中注册。接着上几篇的项目,我们在projtrack/admin.py中注册。

from django.contrib import admin
from .models import Project, Schedule

admin.site.register(Project)
admin.site.register(Schedule)

注册之后就可以在http://127.0.0.1:8000/admin中显示了。

2. admin界面汉化及时区

在项目设置中setting.py中添加:

LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'

-----列表界面设置-----

一般在amdin中注册后,点击进入数据的记录列表页,只会看到一列。如果在模型创建的时候设置过返回的显示名,则会显示名称。

def __str__(self):
    return self.project_name

如果需要更多的显示和筛选等功能,需要如下设置。

1. 列表基本设置

首先先更改下应用注册的步骤。添加Project模型管理器,在这里去写一些设置。

# projtrack/admin.py

class ProjectAdmin(admin.ModelAdmin):
    list_display=('id', 'project_name')

admin.site.register(Project, ProjectAdmin)

然后在管理器中添加一些列表的基本设置。

# projtrack/admin.py

class ProjectAdmin(admin.ModelAdmin):
    # listdisplay设置要显示在列表中的字段(id字段是Django模型的默认主键)
    list_display = ['id', 'project_name', 'description', 'project_type', 'project_status', 'cre_date']

    # list_display_links表示可点击跳转进入详情的字段(默认可以点击每条记录第一个字段的值可以进入编辑界面)
    list_display_links = ('id', 'project_name')

    # list_editable表示可直接在列表也编辑修改的字段
    list_editable = ['description', 'project_type', 'project_status']

    # list_per_page设置每页显示多少条记录,默认是100条
    list_per_page = 50

    # ordering设置默认排序字段,负号表示降序排序
    ordering = ('-cre_date',)
...

对应效果如下:
Django-04-Django admin页面_第1张图片
image.png
2. 筛选器

可通过筛选器去在筛选数据显示。主要常用筛选器有3种。在管理器中添加即可。

# projtrack/admin.py

class ProjectAdmin(admin.ModelAdmin):
    ...
    # 筛选器
    search_fields = ('project_name',)  # 搜索字段
    list_filter = ('project_status',)   # 过滤器
    date_hierarchy = 'cre_date'  # 详细时间分层筛选
...

对应效果如下:
Django-04-Django admin页面_第2张图片
image.png
3.添加关联的对象

在我们注册Schedule后,可以看到添加时的表单是这样的:
Django-04-Django admin页面_第3张图片
image.png

在这个表单中,"Project" 字段是一个包含数据库中所有项目的选择框。Django 知道要将 ForeignKey 在后台中以选择框