zoukankan      html  css  js  c++  java
  • 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表示选中的框在下面垂直方向上。

  • 相关阅读:
    两个list,并集、交集、差集
    关于apt-get install
    异步进程池
    获取cpu信息
    print重定向
    使用pandas操作excel
    排列组合,取所有可能性
    list_反转,切片,删除,升序降序
    抠图
    enumerate()函数的用法
  • 原文地址:https://www.cnblogs.com/Forever77/p/10541775.html
Copyright © 2011-2022 走看看