簡體   English   中英

一個類的python過濾器實例

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM