0

こんにちは私は、データベースから合計4つの値のうち1つの値を持つことができるフィールド値をフェッチする関数を持っています。これに基づいて、値に従っていくつかのデータを表示する必要があります。

update_grp = User_Groups.objects.get(user_id=request.user.id)
    showopen = update_grp.profilegroup
    if showopen == "trendy":
      slidercategory = Category.objects.get(id = 65)
    elif showopen == "Classic":
      slidercategory = Category.objects.get(id = 63)
    elif showopen == "Glam":
      slidercategory = Category.objects.get(id = 81)
    elif showopen == "Bohemian":
      slidercategory = Category.objects.get(id = 62)
    sliderproduct = slidercategory.product_set.all()  

しかし、私は次のエラーが発生しました

local variable 'slidercategory' referenced before assignment

私が間違いをしている場所を提案してください

4

2 に答える 2

1

showopen変数は、コードで提供される4つのオプションに含まれていません。変数が実際に何であるかを確認するデバッガーがない場合は、変数をコンソールに出力するいくつかのprintステートメントをコードに追加します。

update_grp = User_Groups.objects.get(user_id=request.user.id)
    showopen = update_grp.profilegroup
    print showopen
    #..
于 2013-02-27T09:11:08.047 に答える
0

'else'句が欠落しているため、インタプリタは、関数のスコープ内で'slidercategory'が使用できない場合があると判断します(ifステートメントのいずれも一致しない場合)。

関数の先頭にelse句を追加するか、sliderproduct ='somedefaultvalue'を割り当てると、別の解決策として、リターンバーをif句のスコープに移動します。これにより、ifが一致しない場合にNoneが返されます。 。

>>> def test(foo):
...     if foo == 2:
...        bar = 'hello'
...     elif foo == 3:
...        bar = 'goodbye'
...     return bar
>>> test(2)
>>> 'hello'
>>> test(1)
UnboundLocalError: local variable 'bar' referenced before assignment
于 2013-02-27T09:17:23.570 に答える