在Django中为数据库内容的变量赋值

时间:2013-02-27 09:09:03

标签: android python django variables

嗨我有一个函数可以获取字段值,该字段值可以从数据库中的总共四个值中有一个值,我需要根据值显示一些数据

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 :(得分: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