组团学

后台管理-Admin站点管理

阅读 (254443)

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)
需要 登录 才可以提问哦