共计 2910 个字符,预计需要花费 8 分钟才能阅读完成。
admin 是什么?
admin 站点是可视化界面后台管理系统,方便模型数据的操作与维护。
一、配置
-
settings.py
在 settinngs.py 文件中的 INSTALLED_APPS 中添加’django.contrib.admin’默认是已经添加好的
INSTALLED_APPS = ['django.contrib.admin', ]
配置中国的时区
修改 settings.py 文件
LANGUAGE_CODE = 'zh-Hans' TIME_ZONE = 'Asia/Shanghai'
-
创建管理员用户
python manage.py createsuperuser
依次输入用户名、邮箱、密码
二、所需模型类
- 班级表
# 班级表
class Grades(models.Model):
gname = models.CharField(max_length=15)
gnum = models.IntegerField()
ggirlnum = models.IntegerField()
gboynum = models.IntegerField()
isDelete = models.BooleanField(default=False)
class Meta:
db_table = 'grades'
-
学生表
# 学生表 class Students(models.Model): sname = models.CharField(max_length=10) ssex = models.BooleanField(default=True) sage = models.IntegerField(default=20) sgrade = models.ForeignKey(Grades, on_delete=models.CASCADE) isDelete = models.BooleanField(default=False) def __str__(self): return self.sname class Meta: db_table = 'students'
三、admin 配置属性使用
-
字段显示
list_display
list_display = ['pk', 'gname', 'gnum', 'ggirlnum', 'gboynum', 'isDelete']
-
过滤字段
list_filter
list_filter = ['gname']
-
搜索字段
search_fields
search_fields = ['gname']
-
分页
list_per_page
list_per_page = 5
-
更改添加、修改数据样式
fields
fields = ['ggirlnum','gboynum','gname','gnum','isDelete']
-
添加、修改数据 属性分组
fieldsets
fieldsets = [("num",{"fields":['gnum', 'ggirlnum','gboynum']}), ("other",{"fields":['gname','isDelete']}), ]
注意:fields 与 fieldsets 不能同时使用
四、操作实例
-
修改 admin.py 文件 配置后台显示页面
from .models import Grades,Students # 注册 admin.site.register(Grades) admin.site.register(Students)
-
配置后台班级的页面显示
from .models import Grades,Students class GradesAdmin(admin.ModelAdmin): # 列表页属性 # 显示字段 list_display = ['pk', 'gname', 'gnum', 'ggirlnum', 'gboynum', 'isDelete'] # 过滤字段 list_filter = ['gname'] # 搜索字段 search_fields = ['gname'] # 分页 list_per_page = 5 # 添加、修改数据的时候 属性的先后顺序 # fields = ['ggirlnum','gboynum','gname','gnum','isDelete'] # 添加、修改数据的时候 给属性分组 fieldsets = [("num",{"fields":['gnum', 'ggirlnum','gboynum']}), ("other",{"fields":['gname','isDelete']}), ] admin.site.register(Grades, GradesAdmin)
-
关联对象
需求:在创建一个班级时可以直接添加几个学生
#TabularInline 横着显示添加学生布局 #StackedInline #竖着显示添加学生的布局 class StudentsInfo(admin.TabularInline): model = Students extra = 2 #2 带表添加的学生 S 数 class GradesAdmin(admin.ModelAdmin): inlines = [StudentsInfo]
-
字段显示中文
将模型设置属性 verbose_name 的值
from django.db import models # Create your models here. class Grades(models.Model): gname = models.CharField(max_length=15, verbose_name='班级名称') gnum = models.IntegerField(verbose_name='班级总人数') ...
说明:在将数据库里面的数据导出成 csv 文件,那么 csv 文件的表头的名字可以通过取每个字段的 verbose_name 来获取,数据可以通过 queryset 语句来获取。这样制作出来的 csv 表就能像数据库一样,字段名和字段值一一对应了。在后台字段也都会显示为中文
-
布尔值显示问题(显示成男女)
class StudentsAdmin(admin.ModelAdmin): def gender(self): if self.ssex: return "男" else: return "女" # 设置页面列的名称 sa gender.short_description = "性别" list_display = ['pk','sname','sage',gender,'scontented','sgrade','isDelete'] list_per_page = 10 # 执行动作的位置 搜索框的上下位置 actions_on_top = False actions_on_bottom = True admin.site.register(Students,StudentsAdmin)
-
使用装饰器完成注册
@admin.register(Grades) class StudentAdmin(admin.ModelAdmin): pass @admin.register(Students) class StudentsAdmin(admin.ModelAdmin): pass #admin.site.register(Students,StudentsAdmin) # admin.site.register(Grades, GradesAdmin)
正文完
星哥玩云-微信公众号