2013-02-27 3 views
0

안녕하세요 저는 값에 따라 일부 데이터를 표시해야하는 기본 데이터베이스에서 총 4 개의 값 중 하나의 값을 가질 수있는 필드 값을 가져 오는 기능이 있습니다Django에서 데이터베이스 내용의 변수에 값을 할당

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 

내가

답변

1

귀하의 showopen 변수는 네 가지 옵션에없는 실수를하고있는 중이 야 어디 제안하십시오 다음과 같은 오류가 발생했습니다 귀하의 코드에 의해 제공됩니다. 변수가 실제로 무엇인지 확인하는 디버거가 없으면 변수를 콘솔에 인쇄하는 코드에 일부 print 문을 추가하십시오.

update_grp = User_Groups.objects.get(user_id=request.user.id) 
    showopen = update_grp.profilegroup 
    print showopen 
    #.. 
+0

덕분에 예를 바로 showopen 변수는 네 가지 옵션에없는하지만 지금은 그 값을 얻을 수이고 그것을 듣고 좋은 – user2106353

+0

잘 작동했다. –

0

interpretator가 'slidercategory가'함수의 범위 (비 진술이 일치하는 경우)에서 사용할 수없는 경우가있을 수 있습니다 볼 수 있도록이 '다른'절을 놓치고있어.

함수의 맨 위에 else 절을 ​​추가하거나 sliderproduct = 'somedefaultvalue'를 할당하십시오. 다른 해결책은 반환 막대를 해당 범위의 if 절로 이동하는 것이고, 결과가 없으면 None이 반환됩니다. if는 일치합니다. 기꺼이 도와 - 답장을

>>> 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 
+0

그건 통역사가 아니에요. 필자는'if True :'와'elif False :'(no else) 값을 할당하는 빠른 테스트를 수행했으며, 함수가 잘 동작했습니다. –

+0

할당 된 값과 '참인 경우'는 어떻게 비교됩니까? 'local variable'slidercategory '가 할당 전에 참조 됨'이라는 오류가 명시 적으로 문제를 진술하고 있습니다 .. –

+0

아니요, 파이썬 2.7.2에서 위의 코드를 실행했으며 잘 실행됩니다. test (2)는 'hello'를 반환합니다. . –

관련 문제