模型对象中有一个 objects属性,该属性是管理器 Manager类型的对象,几乎所有的方法都是通过该对象执行的。通过该方法可以进行数据库表添加数据

Q对象

filter()等方法中的关键字参数查询都是并且( ‘AND’ )的,如果需要执行更复杂的查询( 例如 OR语句 ),那么可以使用 Q对象

  1. from django.db.models import Q
  2. # 等同于 SELECT * FROM 表(类)名 WHERE 字段 LIKE '检索条件' OR 字段 LIKE '检索条件'
  3. 对象 = 类名.objects.filter(Q(字段_检索条件))| Q((字段_检索条件))
  1. # 等同于 SELECT * FROM 表(类)名 WHERE 字段 LIKE '检索条件' AND (字段 LIKE '检索条件' OR 字段 LIKE '检索条件')
  2. 对象 = 类名.objects.filter(Q(字段_检索条件), Q(字段_检索条件))| Q((字段_检索条件))
  1. 对象 = 类名.objects.filter(Q(字段_检索条件), Q(字段_检索条件), ~Q(字段_检索条件))
  • Q对象用于封装一组关键字参数,可以使用 & 和 |、~ 操作符组合
  • 当一个操作符在两个 Q对象上使用时,它产生一个新的 Q对象

F对象

模型的属性名出现在操作符的右边,就使用 F对象包裹

属性对比

  1. from django.db.models import F
  2. # 等价于 SELECT * FROM 表名 WHERE 字段 > 字段
  3. 类名.objects.filter(字段__gt= F('字段'))

运算符

  1. # 等价于 SELECT * FROM 表名 WHERE 字段 > 字段 + 10
  2. 类名.objects.filter(字段__gt= F('字段') + 10)
  3. # 等价于 UPDATE 表名 SET 字段
  4. 类名.objects.update(字段= F('字段') + 10)