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

Django中int与Time模型对象相加报TypeError如何解决

实现方法

无需修改模型类,在自定义函数内调整逻辑即可完成分钟数求和,以下是两种可用方案:

方案1:修正循环逻辑

原有代码错误点在于循环时直接累加Time模型实例,而非实例中存储数值的value字段,修正代码如下:

def sum(request):
    times = ..._set.all()
    total_min = 0  # 初始化总和为整型0
    for time_obj in times:
        # 字段允许为空,空值按0计算避免类型报错
        current_min = time_obj.value if time_obj.value is not None else 0
        total_min += current_min

方案2:ORM聚合查询(推荐,性能更好)

如果不需要遍历单条记录做额外处理,直接通过数据库聚合完成求和,避免Python层循环的性能损耗,代码如下:

from django.db.models import Sum, Coalesce

def sum(request):
    # 聚合直接计算总和,Coalesce处理无有效记录时返回None的情况,统一返回整型0
    total_min = ..._set.aggregate(total=Coalesce(Sum('value'), 0))['total']

注意:两种方案都兼容value字段null=True的设定,不会出现空值导致的运算错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 08:00:36