2020.5.7 Django (需要复习)原生数据库操作

发布于 2020-05-07  53 次阅读


Table of Contents

  • 1.创建XXX_Manager(admin.ModelAdmin)管理类
  • 2.关联模型类(model中的类)和模型管理类(XXX_Manager)
  • 模型管理器类ModelAdmin中实现的高级管理功能
    1. list_display 去控制哪些字段会显示在Admin 的修改列表页面中。
    2. list_display_links 可以控制list_display中的字段是否应该链接到对象的“更改”页面。
    3. list_filter 设置激活激活Admin 修改列表页面右侧栏中的过滤器
    4. search_fields 设置启用Admin 更改列表页面上的搜索框。
    5. list_editable 设置为模型上的字段名称列表,这将允许在更改列表页面上进行编辑。
    6. 其它参见https://docs.djangoproject.com/en/1.11/ref/contrib/admin/
  • 数据库表管理

    • 1.修改模型类字段的显示名字
      • 通过 verbose_name 参数来展示
      • 作用:此字段显示的名字会在后台数据库管理页面显示
    • 2.内嵌类Meta 定义模型类属性展现形式
      • 作用:可以更改数据表名称、单数、复数名称(展现在admin)
      • db_table(数据库名),verbose_name(单数名),verbose_name_plural(负数名)
      • 用法:定在在model内的自定义类中,作为内部类定义
  • 数据表关联关系映射 Relationship Map

    • 三种映射关系

      • 一对一
      • 一对多
      • 多对多
    • 一对一映射:

      • 使用关键字:
        • 使用方法和创建字段一样
        • fields = models.实体类.OneToOneField(映射的类)来创建
        • 创建数据时候赋值是一个对象 fields=映射的对象
      • 访问数据(查询)
        • 可以双向访问,django已经写好了接口
        • 正向查询
          • 直接通过关联属性查询
        • 反向查询
          • 通过反向引用属性查询
          • 反向引用属性为实例对象.引用类名(小写),
          • 如作家的反向引用为作家对象.wife
      • 可以包含级联动作
    • 一对多映射:

      • 使用关键字:
        • 使用方法和创建字段一样
        • fields = models.实体类.ForeignKey(映射的类)来创建
        • 创建数据时候赋值是一个对象 fields=映射的对象
      • 访问数据(查询)
        • 多查一(正向查询)
          • 直接通过关联属性查询
        • 用filter来过滤查询(一查多)
        • 多出来一个 类名_set() 方法,可以返回多个数据
      • 常用参数:
        • on_delete
          1. models.CASCADE 级联删除。 Django模拟SQL约束ON DELETE CASCADE的行为,
            并删除包含ForeignKey的对象。
          2. models.PROTECT 抛出ProtectedError 以阻止被引用对象的删除;
          3. SET_NULL 设置ForeignKey null;只有null是True才有可能。
          4. SET_DEFAULT 将ForeignKey设置为其默认值;必须设置ForeignKey的默认值。
          5. ... 其它参请参考文档 https://yiyibooks.cn/xx/Django_1.11.6/ref/index.html ForeignKey部分
        • **options 可以是常用的字段选项如:
          1. null
          2. unique等
      • 可以包含级联动作
    • 多对多映射:
  • 4.扩展延伸知识

    • django path匹配负数

    • ORM

      • 即Object-Relationl Mapping,它的作用是在关系型数据库和对象之间作一个映射,这样,我们在具体的操作数据库的时候,就不需要再去和复杂的SQL语句打交道,只要像平时操作对象一样操作它就可以了 。
      • https://blog.csdn.net/u010947534/article/details/90669452
    • django中 migrate使用回退操作

      • 作用:django中数据库有位置错误可以使用该方法调试
      • python manage.py migrate bookstore(应用名) 0005

    5.知识内容个人梳理

    6.今天都复习了之前的什么内容

    7.运动数据

    • 登山跑 40 3组
    • 侧抬腿 30 3组
    • 腹肌锻炼 25 3组