6. Django学习笔记——F查询和Q查询

F查询与Q查询得区别:
Q查询——对对象的复杂查询
F查询——专门取对象中某列值的操作(内部的字段匹配)

导入Q,F对象 :

from django.db.models import Q,F

F:主要作用(一个表里面内部字段与字段之间的对比操作)
1)和models自身的字段进行对比。比如:

Student.objects.filter(age__gt=F('age2'))

2) 对字段进行数学运算。比如:

Student.objects.filter(age__gt=F('age2') * 2)

Q: 对对象的复杂查询
且操作:
默认情况下Django的查询只是且操作如下:
找到用户为zhangsan并且age=18的数据

UserInfo.objects.filter(username='zhangsan',age='18')

或操作:
如果需要执行或操作 ,就需要使用到Q对象了。
Q对象可以用 & | ~ (与,或,非)去连接:

UserInfo.objects.filter(Q(age__gt=20) & Q(age__lt=50))
UserInfo.objects.filter(Q(age__gt=20) | Q(age__lt=50))
UserInfo.objects.filter(~Q(age__lt=50))

等于: WHERE question LIKE 'Who%' OR question LIKE 'What%'
如果Q和关键字参数一起使用的话,Q必须放在关键字参数前面:

Student.objects.get(Q(age__gt=20) | Q(age__lt=50), name__contains='zhang')
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值