其他分享
首页 > 其他分享> > Django 聚合函数使用

Django 聚合函数使用

作者:互联网

Django之model聚合使用

在这里插入图片描述
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())
迎风搬石头 发布了8 篇原创文章 · 获赞 9 · 访问量 268 私信 关注

标签:聚合,name,profit,money,Django,annotate,objects,TradeDetail,函数
来源: https://blog.csdn.net/weixin_44592461/article/details/103967403