2016-11-07 7 views
0

Ich bin neu in Python und versuche derzeit, etwas Python-Code zu debuggen.Python-Filter-Instanzen einer Klasse

Ich habe eine Ansicht, die zur Zeit wie folgt definiert ist:

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 

Der Zweck dieser Ansicht ist ein Parameter eines ‚Projekt ID‘ zu nehmen, und auf der Grundlage dieser ID, kehren die neueste Version des Budgets, das zu diesem Projekt gehört, und weist alle "älteren" Budgets einer Liste zu.

Wenn ich jedoch versuche, diese Ansicht in einer Python-Shell auszuführen, mit dem Befehl get_current_budget(5915) (ich weiß, dass '5915' ist die ID eines der Projekte in der Datenbank), bekomme ich eine KeyError, die besagt:

KeyError Traceback (jüngste Aufforderung zuletzt) ​​ in() ----> 1 get_current_budget (5915)

Es gibt auch die Meldung:

Wir ** kwargs verwenden, anstatt ein kwarg Argument der

504    # `manager='manager_name'` syntax. 

Ich verstehe nicht wirklich zu erzwingen, was das bedeutet ... kann es mir jemand erklären? Was mache ich hier falsch?

Antwort

0

mit

get_current_budget (project_id = 5915) spezifisch Versuchen

, um zu sehen, was passiert.

Auch die zweite Nachricht, die Sie sehen, ist offenbar ein Kommentar, wahrscheinlich von GenericRelationObjectManager gefunden here. Ich bin mir nicht sicher, warum Sie es sehen.

Verwandte Themen