zoukankan      html  css  js  c++  java
  • django 创建管理员用户

    7.2 create 创建管理员用户:
    python manage.py run server
    python manage.py createsuperuser
    password :12345678912
    7.3 admin.py 注册模型:
    from .models import Student,Grade
    
    class Register(admin.ModelAdmin):
     7.3.1 #列表页属性
        list_display 展示数据库字段名称包含字段列
        list_filter过滤器过滤根据某个字段
        search_fields = ['user_name'] # 查询筛选字段依据字段名称,此字段不可以为外键类列
        list_per_page = 2   #数据库分页数量2 row 为一页
        # 添加修改页(注意fields和fieldsets不可以同时使用,只能存在以一个)
        #排序,只针对可编辑列,展示,对于pk不允许编辑
        #fields = ['user_name','is_man','is_delete','stu_id']
        #分组属性,列表顺序就是页面展示顺序
        fieldsets = [("basic",{"fields":["user_name","is_man"]}),
        ("junior",{"fields":["is_delete","stu_id"]})]
    
    #注册类
    admin.site.register(Student,RegisterStudent)
    admin.site.register(Grade,RegisterGrade)
    7.4关联对象
    在admin.py里新建关联对象class并且继承admin.TabularInline类,引入需要被关联的class model,以及关联extra rows数量
    class StudentGradeInfo(admin.TabularInline):
        # 声明需要关联模型对象属性赋值
        model = Student
        # 关联几个row
        extra = 2
    在需要展示引入模型的主模型中引入extra 的model对象:
      inlines = [StudentGradeInfo]
    页面布尔表达式自定义:
    class RegisterStudent(admin.ModelAdmin):
        #重新定义属性列展示名称函数
        def zh_sex(self):
            if self.is_man:
                return "True"
            else:
                return "False"
    
        def delete_condition(self):
            if self.is_delete:
                return "yes"
            else:
                return "no"
        #web展示字段缩写
        zh_sex.short_description = "性别"
        delete_condition.short_description = "在校"
        #动作展示位置调整
        actions_on_bottom = True
        actions_on_top = False
        # check box 选中计数显示,false不显示,true 显示
        actions_selection_counter = False
        #引入重新定义的展示列为函数对象替换原有字符串如zh_index,delete_condition
        list_display = ['pk', 'user_name', zh_sex, 'createObj_date', delete_condition, 'stu_id']
    FAQ:
    Django 数据库建表的时候 No migrations to apply原因出现和解决
    rm -rf  0001_initial.py 进入数据库delete from django_migrations where app="yourapplicationName";
    执行: python manage.py makemigrations
    python manage.py migrate
    检查结果显示success:
    Running migrations:
      Applying app.0001_initial... OK
    one to one
    one to many 与主键外键关系
    一对一则需要sub table pr和Foreignkey 共用一个字段
    一对多,sub table pr 和 Foreignkey 分开
    主表的主键最好外键到子表的外键上,不能外键到sub table的pk column
    FAQ:主表,sub 表删除顺序:必须先删除子表在删除主表由于子表外附与主键就像橘子皮附着在橘子肉上一样,
    想吃橘子必须先去皮,否则报错如下情况:其次如果想删除主表的数据而不是drop表并且继续保留主表sub表数据可以先备份子表再删除主表数据就可以了但是要建立级联删除关系:
    需要在创建多对一的关系的,需要在Foreign的第二参数中加入on_delete=models.CASCADE  主外关系键中,级联删除,也就是当删除主表的数据时候从表中的数据也随着一起删除
    mysql> drop table app_grade;
    ERROR 3730 (HY000): Cannot drop table 'app_grade' referenced by a foreign key constraint 'app_student_stu_id_id_eb16ae0c_fk_app_grade_grade_id' on table 'app_student'.
    mysql> drop table app_student;
    Query OK, 0 rows affected (0.02 sec)
    mysql> drop table  app_grade;
    Query OK, 0 rows affected (0.07 sec)
    

      

  • 相关阅读:
    主从数据库
    Linux 安装 mysql
    centos7.5上安装go1.13.4
    Linux 安装php
    CENTOS7下安装redis
    CentOS 7安装Etherpad(在线协作编辑)
    nginx《一安装》
    springboot中redis取缓存类型转换异常
    linux安装mysql
    linux上传下载文件(转载https://www.jb51.net/article/143112.htm)
  • 原文地址:https://www.cnblogs.com/SunshineKimi/p/11757555.html
Copyright © 2011-2022 走看看