准备工作
汉化 admin 系统
# settings.py
LANGEUAGE_CODE = 'zh-hans'
创建管理员
# 命令行创建管理员用户, 根据提示输入密码等信息
python manage.py createsuperuser
将表注册到 admin 系统
- 无需自定义条目展示页 - host/admin.py
from app01 import models # 将 app 中的表注册到 admin 中, admin.site.register(models.类名) # 只有被注册的表才能被 admin 系统管理 admin.site.register(models.Host)
- 需要自定义条目展示页 - host/admin.py
from django.contrib import admin from host import models @admin.register(models.Host) class MyHost(admin.ModelAdmin): # 自定义参数内容 # .. # ..
使用
models.py
from django.db import models
# Create your models here.
class Host(models.Model):
# AutoField 表示自增列
# primary_key 表示为该表主键
id = models.AutoField(primary_key=True)
# 修改字段名显示
# 可以对 django 表单填写的数据进行约束, 如: uniqu, max_length 等
hostname = models.CharField(max_length=16, verbose_name="主机名")
ip_addr = models.CharField(max_length=32, verbose_name="IP地址", unique=True)
# 修改表名显示
class Meta:
verbose_name = "主机信息"
verbose_name_plural = verbose_name
# 信息条目页面显示的内容, 如果不写则会展示 xx object(1), xx object(2)
def __str__(self):
return self.hostname
- 管理页
- 数据编辑页
- 数据条目页
admin.py
from django.contrib import admin
from host import models
@admin.register(models.Host)
class MyHost(admin.ModelAdmin):
# 数据条目页
list_display = ["hostname", "ip_addr"] # 展示这两列
# 这两列只能同时存在一个
list_editable = ["hostname", "ip_addr"] # 可编辑的列
list_display_links = ["hostname", "ip_addr"] # 超链接的列
# 用于筛选
search_fields = ["hostname", "ip_addr"] # 上方搜索框, 指定关键字搜索范围
list_filter = ["hostname", "ip_addr"] # 侧边筛选菜单, 可点击筛选符合条件的条目
# 空值是默认显示, 如果列可编辑, 则不显示这个
empty_value_display = "无数据"
# 数据编辑页
fields = ["ip_addr"] # 只展示 ip_addr 这一列
exclued = ["hostname"] # 只不展示 hostname 这一列