在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
请告诉我我哪里做错了。
2 个回答
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
1
你的 showopen
变量不在你代码提供的四个选项里面。如果你没有调试工具来查看这个变量的实际值,那就可以在代码里加一些打印语句,把这个变量的值打印到控制台上。
update_grp = User_Groups.objects.get(user_id=request.user.id)
showopen = update_grp.profilegroup
print showopen
#..