2016-11-07 10 views
0

私はPythonを初めて使用しています。現在、いくつかのPythonコードをデバッグしようとしています。クラスのPythonフィルタインスタンス

私は現在、次のように定義されたビューがあります。このビューの目的は、「プロジェクトID」のパラメータを取り、そして、そのIDに基づいて、最新のバージョンを返すことです

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 

をそのプロジェクトに属する予算のうち、「古い」予算をすべてリストに割り当てます。 :言うしかし

、私は(私は「5915」は、データベース内のプロジェクトの一つのIDであることを知っている)、私はKeyErrorをgetコマンドget_current_budget(5915)を使用して、Pythonシェルでこのビューを実行しようと、

KeyError例外トレースバック(最新の呼び出しの最後) ----> 1 get_current_budget(5915)

)(中また、メッセージを表示します。

私たちは、私は本当にこれが何を意味するのか理解していない

504    # `manager='manager_name'` syntax. 

を強制するkwarg引数ではなく、** kwargsからを使用して...誰かが私にそれを説明することができますか?私はここで間違って何をしていますか?

答えて

0

は何が起こるか見て

get_current_budget(PROJECT_ID = 5915)

と特定されてみてください。

また、表示される2番目のメッセージは明らかにGenericRelationObjectManagerからのコメントであり、おそらくhereです。私はあなたがそれを見ている理由は確かではありません。