[英]python filter instances of a class
我是Python的新手,目前正在尝试调试一些Python代码。
我有一个当前定义为这样的视图:
def get_current_budget(project_id, prefetch=False):
""" Find budget by empty version number, or if none, check whether there is one with a current marker """
if prefetch:
project = Project.objects.prefetch_related('budget_versions', prefetch).get(id=project_id)
else:
project = Project.objects.prefetch_related('budget_versions').get(id=project_id)
try:
#budget = project.budget_versions.get(version_number=None)
budgets = project.budget_versions.filter(version_number=None)
print "Latest version of budget: ", project.budget_versions()
"""
1. Check how many elements have been saved to 'budgets'
2. Loop through the elements- assign any with no budget items/ presentation date to a test project
3. Return the element with the budget items/ presentation date
"""
for budget in budgets:
if budget.budget_items == "":
budget.project = "test"
else:
budget.project = project
return budget
except ObjectDoesNotExist:
try:
budget = project.budget_versions.filter(version_number=0).order_by('-presentation_date')[0]
print "Latest verions of budget (execpt- try): ", project.budget_versions()
return budget
except IndexError:
print 'Budgets found', project.budget_versions.all()
return None
该视图的目的是获取“项目ID”的参数,并基于该ID返回该项目预算的最新版本,并将所有“较旧”预算分配给列表。
但是,当我尝试使用命令get_current_budget(5915)
在Python Shell中运行此视图时(我知道'5915'是数据库中项目之一的ID),我得到了KeyError
,它说:
()中的KeyError追溯(最近一次通话最近)----> 1 get_current_budget(5915)
它还给出了消息:
我们使用** kwargs而不是kwarg参数来强制执行
504 # `manager='manager_name'` syntax.
我真的不明白这意味着什么...有人可以向我解释吗? 我在这里做错了什么?
尝试具体说明
get_current_budget(project_id = 5915)
看看会发生什么。
另外,您看到的第二条消息显然是一条注释,很可能来自此处的 GenericRelationObjectManager。 不过,我不确定为什么会看到它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.