F对象和Q对象

F对象和Q对象

F对象

一个F对象代表数据库中某条记录的字段的信息

作用:

通常是对数据库中的字段值在不获取的情况下进行操作

用于类属性(字段)之间的比较

语法

复制代码
from django.db.models import F
F('列名')

解决一种极端事件的产生,比如用户对一条微博的点赞,假如他们同时同时点赞,点赞数的可能只增加一个,但是用F对象就会使用MySQL中的一种锁使更新语句一次只能一个用户运行

复制代码
old - >update topic set like = 1 where id = xxxx
F - > update topic set like = like + 1 where id = xxxx

Q对象

当在获取查询结果集 使用复杂的逻辑或、逻辑非~等操作时可以借助于 Q对象进行操作

如: 想找出定价低于20元 或 清华大学出版社的全部书,可以写成

复制代码
Book.objects.filter(Q(price__lt=20) | Q(pub="清华大学出版社"))

Q对象在 数据包 django.db.models 中。需要先导入再使用

作用:在条件中用来实现除 and(&)以外的 or()或 not(~)操作

运算符:

& 与操作

| 或操作

~ 非操作

语法:

复制代码
from django.db.models import Q
Q(条件1)|Q(条件2) # 条件1成立或条件2成立
Q(条件1)&Q(条件2) # 条件1和条件2同时成立
Q(条件1)&~Q(条件2) # 条件1成立且条件2不成立
相关推荐
SkyWalking中文站6 小时前
BanyanDB 0.11.0:新特性与升级指南
数据库
₍˄·͈༝·͈˄*₎◞ ̑̑码8 小时前
MyBatis操作数据库
数据库·mybatis
刃神太酷啦10 小时前
Redis 进阶核心:持久化 (RDB/AOF)、事务与主从复制全解析----《Hello Redis!》(5)
linux·c语言·数据库·c++·redis·缓存·bootstrap
丁丁点灯o10 小时前
Oracle中使用外键的场景及不适用外键的情况
数据库·oracle
天天进步201510 小时前
Pixelle-Video 源码解析 #18:声音克隆功能:参考音频如何影响解说效果?
数据库·音视频
不懂的浪漫11 小时前
ToDesk 连接 Linux 后分辨率过低的解决方法
linux·运维·数据库
布莱克60511 小时前
Redis 详解:从核心数据结构到高可用架构
数据库
冰暮流星12 小时前
mysql之左外连接与右外连接
数据库·sql
jyOverQ12 小时前
MySQL 联合索引怎么用?最左匹配原则到底是什么意思?
数据库·mysql
oradh12 小时前
Oracle enq: US - contention 等待事件总结
数据库·oracle