0
我是Python新手,目前正在嘗試調試一些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,返回最新版本的預算屬於該項目,將所有「較早」的預算分配到一個列表中。但是,當我嘗試在Python shell中運行此視圖時,使用命令get_current_budget(5915)
(我知道'5915'是數據庫中某個項目的ID),我得到一個KeyError
,它表示:
KeyError異常回溯(最近通話最後一個) 在() ----> 1個get_current_budget(5915)
這也給消息:
我們使用** kwargs而非kwarg參數執行
504 # `manager='manager_name'` syntax.
我真的不明白這是什麼意思?有人可以解釋給我聽?我在這裏做錯了什麼?