Django 聚合函数使用

在这里插入图片描述
from from django.db.models import Q, F, Sum, FloatField
from django.db.models.functions import Cast

1.F

F对象可以用于查询过程中,对某个字段进行一些算术运算,比如加减乘除
qs = TradeDetail.objects.values(“profit”,“name”).annotate(profit=F(“money”)-100)
profit = qs.first()[“profit”] # 获取某件商品的利润

2.Q

Q对象可以用于查询过程中,一些逻辑条件之间合并查询,比如或与关系的查询
qs1 = TradeDetail.objects.values(“profit”,“name”).filter(Q(money__gte=100) | Q(direction=“1”))

3.聚合

1. Cast,用于做类型转换
q1 = TradeDetail.objects.values("profit", "name").annotate( profit=F("money") * F(Cast('direction', FloatField())))
2.Coalesce,从前向后,查询第一个不为空的值
q2 = TradeDetail.objects.annotate(c=Coalesce('name', 'money'))
3. Concat,拼接
TradeDetail.objects.update(name=Concat('name', 'money'))
4.ConcatPair,拼接(仅两个参数)
TradeDetail.objects.annotate(c=ConcatPair('name', 'money'))
5.Greatest,获取比较大的值;least 获取比较小的值;
TradeDetail.objects.annotate(c=Greatest('id', 'money',output_field=FloatField()))
6.Length,获取长度
TradeDetail.objects.annotate(c=Length('name'))
7. Lower,Upper,变大小写
TradeDetail.objects.annotate(c=Lower('name'))
TradeDetail.objects.annotate(c=Upper('name'))
8. Now,获取当前时间
TradeDetail.objects.annotate(c=Now())
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值