Django中如何对values_list内的所有数值进行求和计算?
解决方案
方法一:用Django聚合函数(推荐)
直接在数据库层面完成求和操作,性能更优,无需将所有数据加载到内存中:
首先导入Sum聚合函数:
from django.db.models import Sum
然后修改mathe3属性:
@property def mathe3(self): # 聚合求和,若无数据则默认0避免报错 total_stunden = self.lehrertabelle_set.aggregate(total=Sum('Stundenanteil_bei_WE'))['total'] or 0 return total_stunden + self.mathe2
方法二:Python原生sum函数
如果需要基于已获取的数值列表求和,也可以直接用Python的sum()函数:
@property def mathe3(self): stunden_values = self.lehrertabelle_set.values_list('Stundenanteil_bei_WE', flat=True) total_stunden = sum(stunden_values) return total_stunden + self.mathe2
两种方法都能实现所有Stundenanteil_bei_WE数值的累加,优先推荐方法一,尤其是数据量较大时,数据库层面的聚合操作效率更高。
内容的提问来源于stack exchange,提问作者user19711010
相关产品推荐
相关产品推荐

