Django之ORM中Q与F查询

Django之ORM中Q与F查询

以这张User表为示例
在这里插入图片描述

F查询:能够直接获取到表中指定字段对应的数据
from django.db.models import F

# 查询user表中weight大于height的数据
models.User.objects.filter(F(weight__gt=F("height")))

# 将user表中所有的age增加5
models.User.objects.update(age=F("age")+5)

# 将所有数据name字段末尾加个“好帅”
# 在操作字符类型的数据的时候 , F不能够直接做到字符串的拼接 需要借助Concat模块和Value模块
from django.db.models.functions import Concat
from django.db.models import Value

models.User.objects.update(name=Concat(F("name"), Value("好帅")))

Q查询:能够改变多个查询条件之间的关系 与或非

from django.db.models import Q

# 基础用法

# age小于18 且 weight大于160
models.User.objects.filter(Q(age__lt=18), Q(weight__gt=160))  # 默认是and

# age小于18 或 weight大于160
models.User.objects.filter(Q(age__lt=18) | Q(weight__gt=160))  # | 是或

# age不小于18 且 weight不大于160
models.User.objects.filter(~Q(age__lt=18) ~ Q(weight__gt=160))  # ~ 是非

# 高级用法

q = Q()  # Q的底层是一个对象
# 修改默认链接关系为 or
q.connector = "or"
# 一般查询数据的时候,条件左边都是变量名的形式,这里可以通过Q对象做到左边为字符串(动态指定查询条件)
q.children.append(("name", "小明"))  # 第一个参数为变量名,第二个参数为值
q.children.append(("age", 18))  # 也可以添加多个条件
models.User.objects.filter(q)
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值