后台管理-Admin站点管理
阅读 (254457)
分享
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)
需要
登录
才可以提问哦
: