将值分配给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 
    #.. 
+0

感谢您的答复是的,你是正确的showopen变量在四个选项,但现在我能得到它的价值,它工作正常 – user2106353 2013-02-27 10:55:45

+0

很好听 - 乐意帮忙。 – 2013-02-27 10:56:15

你错过了一个'别人的条款,因此解释器看到的有可能是其中“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 
+0

我的翻译不是这种情况。我做了一个快速测试,赋值为'if True'和'elif False'(不是别的),并且我的函数工作正常。 – 2013-02-27 09:44:18

+0

如果比较指定的值,“if True”如何?在赋值之前引用的'local variable'slidercategory'的错误明确指出了问题。 – 2013-02-27 09:58:27

+0

没有,我在Python 2.7.2中运行了上面的代码,它运行良好 - test(2)返回'hello' 。 – 2013-02-27 10:53:22