F对象与Q对象也是ORM中的内容
目录
1 F对象
F对象是 指定范围内 一个字段(列)的全部内容对象,语法是这样的
1.1 操作列值
上面我们没有指定范围,下面我们指定一个范围,比如说我们现在要选表中的所有retail_price并让其都加10元
我们发现每一行都加了10元
如果不使用F对象,那么就应该这样写
1.2 并发计数
如果不使用F对象,那么就应该这样写
使用更新的方法不如使用F对象,如果在实际工作中(并发计数),一定要使用F对象
场景: 例如1000个人同时点赞某个评论,第一种方式造成的最终结果可能只加了1,因为他们的初始环境是一样的,最后产生的数据是一样的。 使用F,相当于操作表,会有表锁,1000个人点赞,会避免脏数据,会+1000,相当于有事务控制。引用文章 10. django模型层,ORM操作详解,查询操作,更新操作,删除,F对象,Q对象,聚合查询,原生数据库操作_数哥的博客-CSDN博客
1.3 比较列值
我们现在想查询retail_price大于price的书
那么我们就可以这样写
发现一共有四本retail_price大于price的书
2 Q对象
Q对象使用 django.db.models import Q 进行导入,Q()括号中加的是查询条件,用于 逻辑与 ,逻辑或 和 逻辑非 的时候
2.1 逻辑或 |
我们现在想查询 price>=90 或 清华大学出版社的书
发现一共有四本书
2.2 逻辑非 ~
我们现在想查询不是 清华大学出版社 的书
2.3 逻辑与 &
我们现在想查询 不是清华大学出版社的书 且(逻辑与) price<90 的书