django admin后台管理

admin是django提供的基于web的管理数据库的工具,它是django.contrib 的一部分,可以在项目的settings.py中的INSTALLED_APPS看到。

一、admin管理工具的使用方法如下:

1.在models.py中创建模型

class Students(models.Model):
    sname=models.CharField(max_length=20)
    age=models.IntegerField()
    gender=models.BooleanField()
    cls=models.ForeignKey('Classes',on_delete=models.CASCADE)
    def __str__(self):
        return '%s,%s,%s,%s'%(self.sname,self.age,self.gender,self.cls)
    class Meta:
        db_table='students'

class Classes(models.Model):
    cname=models.CharField(max_length=50)
    headmaster=models.CharField(max_length=20)
    def __str__(self):
        return '%s,%s'%(self.cname,self.headmaster)
    class Meta:
        db_table='classes'

2.在模型所在app的admin.py中注册模型

from django.contrib import admin
from app01.models import Students,Classes
admin.site.register(Students)
admin.site.register(Classes)

3.将模型映射到数据库中

即执行python manage.py makemigrations和migrate命令

4.创建超级用户

python manage.py createsuperuser,会提示输入用户名和密码等操作,按提示输入即可

5.运行项目,通过http://127.0.0.1:8000/admin/访问,并通过上一步创建的用户名和密码进行登录

要使用admin管理工具,需要在项目的urls.py文件的urlpatterns中保留path('admin/', admin.site.urls)部分,登录后的管理界面如下:

在这个管理界面也可以对模型进行增、删、改操作。点击Students进入学生模型界面,显示如下,默认最后添加的显示在最上面。

 

 二、自定义admin显示样式

以以上Student模型为例。

1.注册模型时给模型取一个别名

admin.site.register(Students,StudentsAdmin),注意此时这个注册操作应该放在下一步定义别名模型的后面

2.定义别名模型

class StudentsAdmin(admin.ModelAdmin):
    list_display = ('id','sname','age','gender','cls')  #默认只显示显示一列,list_display指定显示列,存在多对多关系的列不能指定显示和可编辑
    list_editable = ('sname','age','gender','cls')  #显示界面可编辑的列
    list_per_page = 5   #每页显示行数
    ordering = ('age','-sname')   #排序,默认升序,前面加-则降序
    search_fields = ('sname','age')  #显示搜索框,在搜索框内可通过指定字段进行搜索
    list_filter = ('age','cls')   #过滤选项
    fieldsets = [(None, {'fields': ['sname','cls']}),
                 ('other information', {'fields': ['gender', 'age'], 'classes': ['collapse']})]  #添加时非必要信息折叠不显示
    #filter_horizontal = ('cls',)  #仅限多对多列使用,对存在多对多的列可搜索
    #filter_vertical = ('cls',)  #同上

3.配置文件和模型定义

admin管理界面默认为英文显示,可在settings.py中修改语言LANGUAGE_CODE = 'zh-hans',则在管理界面会显示中文。

管理界面显示的表名称为模型的名称,如果要修改在admin中显示的名称,可在模型定义时的class Meta下增加一行verbose_name_plural = '自定义名称'。

管理界面显示的列名称为模型定义时的属性名称,例如学生的名字sname在管理界面同样显示为sname,如果在定义时加上verbose_name即别名,sname=models.CharField(max_length=20,verbose_name='学生姓名'),则在管理界面该字段会显示为学生姓名,如果定义时没有其他参数也可以直接跟上别名,例如age=models.IntegerField('年龄')。

按照上述操作修改之后的students显示界面如下。

fieldsets在添加学生时起作用,如下,会将指定的非必须信息折叠起来,当然这些信息要么指定了默认值,要么可以为空,否则不为空还是必须要求给定值。

 

 

假设存在一个班级与老师的多对多关系,filter_horizontal = ('cls',)效果如下,filter_vertical表示选中的框在下面垂直方向上。

 

posted @ 2019-03-16 12:31  Forever77  阅读(1479)  评论(0编辑  收藏  举报