python - Django、Python循环逻辑问题

标签 python django-models

部分有效。可能需要更多信息,但是,我想我会发帖以获取有关此处可能存在的任何明显错误的建议。

问题是如果 activity.get_cost() 返回一个 False 值,该函数似乎完全退出,返回 None

当然,我希望它做的是在 costs = [] 中累加 cost 十进制值并返回它们的总和。很简单,我本以为……但我的 Python 新手显然缺少了一些东西。

根据要求提供更多信息。谢谢。

def get_jobrecord_cost(self):
    costs = []
    for activity in self.activity_set.all():
        cost = activity.get_cost()
        if cost:
            costs.append(cost)
    if len(costs):
        return sum(costs)
    else:
        return False

最佳答案

我注意到如果所有成本都为 None,您将返回 False;我不知道这是否有特定原因,但这确实使编写起来有点困难。如果这不是必需的,你可以这样写:

def get_jobrecord_cost(self):
    costs = [activity.get_cost() or 0 for activity in self.activity_set.all()]
    return sum(costs)

关于python - Django、Python循环逻辑问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/641145/

相关文章:

python - 如何重新连接 asyncio 上的套接字?

python - Django Piston : How can I exclude nested fields from handler results? 这有可能吗?

python - 属性错误: 'ModelFormOptions' object has no attribute 'private_fields' error message

mysql - 使用遗留数据库在 Django 项目中使用复合主键

python - 是否可以通过 django 输入表单传递动态 id

Django 多对多关系

python - Pandas :将行值设置为与索引号对应的字母表中的字母?

python - 如果写入字符串变量,AG34970a device.write 的 PyVisa 控制会导致错误

python - 如何使用 django 在生产服务器上修复模板不存在错误?

python - Django ·干草堆。 And, or 在搜索查询集中