嗨我有一个函数可以获取字段值,该字段值可以从数据库中的总共四个值中有一个值,我需要根据值显示一些数据
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
请告知我在哪里做错了
答案 0 :(得分:1)
您的showopen
变量不在您的代码提供的四个选项中。如果你没有调试器来查看变量实际是什么,那么在代码中添加一些打印语句,将变量打印到控制台。
update_grp = User_Groups.objects.get(user_id=request.user.id)
showopen = update_grp.profilegroup
print showopen
#..
答案 1 :(得分:0)
你错过了一个'else'子句,所以解释器看到可能存在这样一种情况,即你的函数范围内没有'slidercategory'(if语句的非匹配)。
在函数顶部添加一个else子句或者指定sliderproduct ='somedefaultvalue',另一个解决方案是将返回栏移动到其作用域的if子句中,这将导致在没有任何一个时返回None。 ifs匹配。
>>> 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