F查询、Q查询

F操作
  • 如果要比较一个表中的两个不同的字段,可以使用 F 查询
#查找年龄大于体重的用户
ret = User.objects.filter(age__gt=F("weight"))
  • F() 对象之间以及 F() 对象和常数之间可以进行加减乘除和取模的操作。
# 年龄+3,身高+5
User.objects.update(age = F("age") + 2, height = F("height") + 5)
  • 使用 F 查询修改 char 字段
from django.db.models import F, Value
from django.db.models.functions import Concat
# 所有用户姓名"后"面加上"+"
User.objects.update(name=Concat(F("name"), Value("+")))
# 所有用户姓名"前"面加上"+"
User.objects.update(name = Concat(Value("-"), F("name") ))
Q操作
  • 如果需要执行 or 操作,可以使用 Q 查询
# 查找age>1006,或者weight>55
data = User.objects.filter(Q(age__gt=1006) | Q(weight__gt=55))
  • Q 查询和字段查询同时存在时, 字段查询要放在 Q 查询的后面
# 查找age>1006,或者weight>55,并且name包含 “小”字段
data = User.objects.filter(Q(age__gt=1239) | Q(weight__gt=55), name__contains="小")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值