将值分配给Django中的数据库内容的变量
您好我有一个函数可以从数据库的总共四个值中提取一个值,我需要根据这个值显示一些数据将值分配给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
请建议我在哪里做的错误
你showopen
变量在四个选项由您的代码提供。如果您没有调试器来查看变量的实际内容,请在您的代码中添加一些打印语句,将该变量输出到控制台。
update_grp = User_Groups.objects.get(user_id=request.user.id)
showopen = update_grp.profilegroup
print showopen
#..
你错过了一个'别人的条款,因此解释器看到的有可能是其中“slidercategory”不支持您的功能范围(其中非if语句匹配)内的情况。
要么在你的函数的顶部添加一个else子句或赋值sliderproduct ='somedefaultvalue',另一个解决方案是将返回条移动到if子句的范围中,这会导致无返回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
我的翻译不是这种情况。我做了一个快速测试,赋值为'if True'和'elif False'(不是别的),并且我的函数工作正常。 – 2013-02-27 09:44:18
如果比较指定的值,“if True”如何?在赋值之前引用的'local variable'slidercategory'的错误明确指出了问题。 – 2013-02-27 09:58:27
没有,我在Python 2.7.2中运行了上面的代码,它运行良好 - test(2)返回'hello' 。 – 2013-02-27 10:53:22
感谢您的答复是的,你是正确的showopen变量在四个选项,但现在我能得到它的价值,它工作正常 – user2106353 2013-02-27 10:55:45
很好听 - 乐意帮忙。 – 2013-02-27 10:56:15