阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

后台管理-Admin站点管理

95次阅读
没有评论

共计 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)

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-05-26发表,共计2910字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中