【发布时间】:2017-06-09 05:59:58
【问题描述】:
我有一个 Django 应用程序,其中有许多项目。每个项目都可以有多个预算,每次向项目添加新预算时,该项目的现有预算都应将其version_number 加一。 “当前”预算应该是 version_number 为 0 的预算,因此当尝试“获取”当前预算以在代码中的其他地方使用时,我正在执行以下操作:
budgetInstance = Budget.objects.get(project = project, version_number = 0)
但是,似乎不知何故,一些项目以budgets 的数量结束,version_number 为 0,因此数据库中的一些项目似乎有几个“当前预算” ...
我知道我需要修复版本控制的逻辑,以便没有两个budgets 可以拥有相同的version_number,但现在,我只想获取最新的budget对于数据库中的每个项目。
每个Budget 对象都具有以下属性:project_id、version_number、id、presentation_date 等。
所以我现在想通过presentation_date 字段过滤version_number = 0) 时返回的budgets。据我了解,我会使用 min() 来执行此操作,但我似乎无法使其正常工作...
我尝试按照接受的答案:Find oldest/youngest datetime object in a list,并在 shell 中运行以下内容:
mostRecentBudget = min(date for date in budgets.dates if date < now)
但我收到了TypeError,上面写着:
TypeError: 'instancemethod' 对象不可迭代
这是为什么?如何在给定的Project 中搜索Budgets 列表,以查找具有最新presentation_date 字段值的列表?
【问题讨论】:
-
您需要提供更多信息。
budgets和budgets.dates这里是什么?为什么不能使用 db 来订购这个查询?
标签: python django filter get iterable