django models 求某一字段数值和、均值

2022年3月12日 Jerry 2774 2023年11月4日

django models 求某一字段数值和,比如一个model 存有 名字,性别,体重字段,我现在要求一下所有女生的体重总和、最小值、平均值、最大值,应该怎么写呢?

只需要下面简写就可以求出:

from django.db.models import Sum, Max, Min, Avg


totalweight = studentNode.objects.filter(sex='女').aggregate(Sum('weight'))['weight__sum']
totalweight = studentNode.objects.filter(sex='女').aggregate(Sum('weight'))['weight__avg']
totalweight = studentNode.objects.filter(sex='女').aggregate(Sum('weight'))['weight__max']
totalweight = studentNode.objects.filter(sex='女').aggregate(Sum('weight'))['weight__min']

又有这样一种情况,某个订单的状态字段有三个选项值:未支付、已支付、已关闭,这时候我想获取所有未支付和已关闭的字段,应该怎么过滤呢?

这时候可以用到 __in :

list = studentNode.objects.filter(status__in=['未支付','已关闭'])

附上 django 常用过滤:

条件选取querySet的时候,filter表示=,exclude表示!=。

querySet.distinct() 去重复

__exact 精确等于 like 'aaa'

__iexact 精确等于 忽略大小写 ilike 'aaa'

__contains 包含 like '%aaa%'

__icontains 包含 忽略大小写 ilike '%aaa%',但是对于sqlite来说,contains的作用效果等同于icontains。

__gt 大于

__gte 大于等于

__lt 小于

__lte 小于等于

__in 存在于一个list范围内

__startswith 以...开头

__istartswith 以...开头 忽略大小写

__endswith 以...结尾

__iendswith 以...结尾,忽略大小写

__range 在...范围内

__year 日期字段的年份

__month 日期字段的月份

__day 日期字段的日

__isnull=True/False

原创文章,转载请注明出处: https://jerrycoding.com/article/django-sum

微信
jerry微信赞助
支付宝
jerry支付宝赞助

您尚未登录,暂时无法评论。请先 登录 或者 注册

0 人参与 | 0 条评论