django中Q的用法

一、查询中当做或(Q(条件) | Q(条件))

from django.db.models import Q
Student.objects.filter(Q(age__gt=18) | Q(age__lt=10))
# 上面为查询年龄大于18或者小于10岁的学生

二、查询中当做非(~Q(条件))

我们如果想查询非得时候其实可以使用exclude,比如下面

Student.objects.exclude(age=15)
# 将学生年龄为15岁的排除掉

由于Q非常的灵活,如果要求查询名字不等于jack,并且大于10岁的

# 第一种
Student.objects.exclude(name=jack).filter(age__10)
# 第二种
Student.objects.filter(~Q(name=jack), age__gt=10)

三、构建一个Q对象,供Count使用

我们在进行聚合的时候,比如使用Count,如果我们想要在聚合的过程中,进行条件过滤,可能你觉得不会发生,如果想过滤,直接在前面使用filter不就好了,但是,如果我们的表关系足够复杂,并且查询条件比较复杂,是需要的

Count('pk', filter=Q(account_type=True))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值