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

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


1.复习内容

  • 数据模型的几种方法
    • create()
    • get()
    • exclude()
    • filter()
    • all()
    • values()
    • values_list()
  • 修改数据类型
    • 1.修改单个属性
      • 直接修改对象的属性
      • 调用对象的save()
    • 2.查询结果集修改多条
      • update()
  • 删除数据记录
    • 调用对象的方法 delete
    • 调用查询结果集的方法 delete
  • 字段查找
    • 可以用在filter() , exlclude() , get()
    • 查询谓词
      • __exact
      • __contains
      • __gt,__gte
      • __lt,__lte
      • __startwith
      • __endwith
  • 聚合函数
    • 聚合函数主要做统计工作
    • 聚合函数 djang.db.models.* 里面存放了常用聚合函数
    • result = objects.aggregate( 键名=Avg(列名))
    • 返回的是一个字典 ,键是键名,值是聚合函数后的结果
    • 带分组
      • 带分组的操作annotate()

2.灵感代办

3.学习内容

  • django教程Day05

  • 复习资料

  • F对象

    • 定义:代表数据库中某个字段的信息,代表一条记录的某条信息
    • 作用:可以省略遍历多条数据,进行判断,可以在查询修改中,拿到某个字段的值,更方便判断操作
    • 包目录:from django.db.models import F
    • 使用方法:F(“列名”)
    • 例子:
      • models.Book.objects.all().update(market_price=F('market_price')+10)
      • 更新所有表中价格增长10元
  • Q对象

    • 作用:查询结果涉及 与& 或| 非~等操作时候可以使用
    • 用法:需要结合查询谓词使用
      • Q(条件1)|Q(条件2) # 条件1成立或条件2成立
      • Q(条件1)&Q(条件2) # 条件1和条件2同时成立
      • Q(条件1)&~Q(条件2) # 条件1成立且条件2不成立
  • 原生数据库查询方法

    • objects.raw()方法来执行select语句进行查询,查询的结果直接返回,是QuerySet对象
    • 语法Entry.objects.raw(sql语句字符串)
  • 原生数据库修改方法

    • 包目录:from django.db import connection
    • 使用:
      • with connection.cursor() as cur:
        • cruexecute(执行的sql语句字符串)
  • Admin后台管理数据

    • 作用:可以在页面中方便的修改数据库中的数据
    • 使用方法:
  • 自定义后台管理数据(Models)

    • 作用:可以展示每个模块中需要展示的数据
    • 使用:
      • 1.在app目录下的admin.py中注册要管理的数据模型类
      • 2.调用 admin.site.register()方法注册
  • 修改后台的数据展现形式(Models)

    • 重写自定义数据模型的str方法(双下划线)
    • django2.2 可以忽略这个
  • 模型管理类

    • 用后台管理界面添加便于操作的新功能。
    • 需要继承 ModelAdmin类(django.contrib.admin )
    • 使用方法:
      • 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组


Ares个人进阶之路