Python3之Django Web框架F对象,Q对象

71 篇文章 0 订阅
F对象:
from django.db.models import F,Q
主要是两个字段直接比较时,需要用F对象:
    models.Book.objects.filter(bread_num__gte=F('bcomment_num'))
F对象后面可以进行数学运算,更新数据库某个字段时也可以使用:
    models.Book.objects.filter(bread_num__gte=F('bcomment_num')*2)
F对象的参数也可以是跨表字段:
    models.Book.objects.filter(bread_num=F('author_name'))
F对象的参数如果为date/time时,可以使用timedelta进行日期的加减运算:
    models.Book.objects.filter(bpub_date__lt=F('bpub_date') + timedelta(days=5))
Q对象
两个字段之间需要使用逻辑或时,需要引入Q对象:
    models.Book.objects.filter(Q(bread_num__gt=10)|Q(bcomment_num__lt=15))
如果要对Q对象取反,只需要加'~':
    models.Book.objects.filter(~Q(bread_num__gt=10)|Q(bcomment_num__lt=15))
Q对象可以使用&(and)、|(or)操作符组合起来;
当操作符应用在两个Q对象时,会产生一个新的Q对象;
可以使用&|~结合括号进行分组,构造更复杂的Q对象;
filter函数可以传递一个或多个Q对象作为位置参数,如果有多个Q对象,这些参数的逻辑为and;
filter函数可以混合使用Q对象和关键字参数,所有参数都将and在一起,Q对象必须位于关键字参数的前面;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值