You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Django QuerySet中统计字段wertung内字母'r'的出现总数

统计Django QuerySet中字段内所有'r'的总次数

方法一:数据库层面计算(高效,适合大数据量)

利用数据库字符串函数直接计算每个字段中'r'的数量再求和,无需把所有数据拉到Python内存中:

from django.db.models import Sum, Func, Value, F

# 为每条记录计算'r'的数量,再汇总总和
total_r = protokoll.annotate(
    r_count=(
        Func(F('wertung'), function='LENGTH') -
        Func(Func(F('wertung'), Value('r'), Value(''), function='REPLACE'), function='LENGTH')
    )
).aggregate(total=Sum('r_count'))['total'] or 0

原理:通过REPLACE把字段里的所有'r'替换为空字符串,用原字段长度减去替换后的长度,得到单个字段中'r'的出现次数,最后用Sum聚合得到总次数。

方法二:Python层面遍历统计(简单直观,适合小数据量)

如果数据量不大,可以直接拉取字段值到Python中遍历统计:

total_r = 0
# 仅获取wertung字段,减少数据传输开销
for wertung in protokoll.values_list('wertung', flat=True):
    if wertung:  # 处理字段为空的情况
        total_r += wertung.count('r')

内容的提问来源于stack exchange,提问作者pitweazle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 21:41:03