- CRUD
- create
- save
- 创建对象
- 直接实例化对象,设置属性
- 创建属性传入属性
- 使用Model.objects.create()
- 自己封装类方法创建
- 在Manager中封装方法创建
- 更新
- 基于查询
- save
- 删除
- 基于查询
- delete
- 查询
- 查询句柄
- objects
- 隐性属性
- Manager实例
- 操作都封装在这里面
- 获取查询结果集QuerySet
- all
- filter
- exclude
- order_by
- values
- 切片
- 不支持负数
- 实际上相当于limit offset
- 懒查询
- 观察者模型
- 发布者订阅者
- 广播
- 获取单个对象
- get
- 不存在会抛异常DoesNotExist
- 存在多于一个MultipleObjectsReturned
- 使用这个函数 记得捕获异常try/catch
- last
- first
- 坑点
- 可能出现第一个和最后一个是一样
- 需要主动进行排序
- get
- 条件
- 属性_操作符=临界值
- gt
- lt
- lte
- ln
- exact
- startswith
- endswith
- contains
- ignore
- iexact
- icontains
- istartswith
- iendswith
- 条件升级
- F
- 获取字段信息
- 通常在模型的自我属性比较
- 支持算术运算
- Q
- 条件封装
- 支持逻辑运算
- 与或非:&、|、~
- F
- 内置函数
- count
- exists
- 聚合函数
- 操作列
- Max
- Avg
- Min
- Sum
- Count
- 获取查询结果集QuerySet
- objects
- 查询句柄
- create
- 属性
- 显性属性:开发者手动声明的属性
- 隐性属性:没有声明,父类中也不存在,动态产生出来的,如果开发者主动声明了这些属性,隐性属性自己就不生成了
- 重要数据处理
- 逻辑字段
- is_delete
- 自定义Manager实现统一封装:重写get_queryset