Django中对数据表两列求和后过滤并统计符合条件记录数的实现
实现方式1:基于现有annotate逻辑扩展
你已经完成了两列求和的annotate操作,只需在后续链式调用filter()筛选求和结果,再调用count()统计总数即可,代码如下:
from django.db.models import F result_count = table_1.objects.annotate( diff=F('col_a') + F('col_b') ).filter(diff__gt=2).count()
执行后result_count的值就是你预期的1。
实现方式2:省略annotate步骤(Django 3.2+ 支持)
如果不需要复用求和得到的diff字段,也可以直接在filter中写计算逻辑,减少一步操作:
from django.db.models import F result_count = table_1.objects.filter( (F('col_a') + F('col_b')) > 2 ).count()
两种方式最终返回的统计结果完全一致,你可以根据自己的Django版本和业务场景选择。
内容的提问来源于stack exchange,提问作者Jeffersom da Silva Costa
相关产品推荐
相关产品推荐

