django - 更新时的意外行为"模型实例中的属性

时间:2014-09-01 10:50:37

标签: python database django

我是django的新手并发现了这种行为:

在我的views.py中,我定义了以下函数,该函数获取一些json并更新记录的某些值。

def put_global_vars(request, lab_id):
    lab = Lab.objects.get(id=lab_id)
    response = ''
    if request.method == 'POST':
        array = simplejson.loads(request.POST['result'])
        response += 'success'
        data = array['array']
        lab.services = data[0]
        lab.states = data[1]
        lab.node_set = data[2]
        lab.selected_nodes = data[3]
        lab.is_slided = data[4]
        lab.is_select_enabled = data[5]
        print lab.is_select_enabled
    lab.save()
    lab = Lab.objects.get(id=lab_id)
    print lab.is_select_enabled
return HttpResponse(simplejson.dumps({'response' : response}), mimetype='application/json')

问题是显然没有保存新的属性值。 对于第一个print语句,它返回True,它应该是什么。 但对于第二个打印语句,它返回False,这不是我所期望的。 但是False是该属性的默认值。这有关系吗? 我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

此处,lab变量在保存时不在if范围内,因此其值不会更新。所以你的解决方案应该是:

if request.method == 'POST':
        array = simplejson.loads(request.POST['result'])
        response += 'success'
        data = array['array']
        lab.services = data[0]
        lab.states = data[1]
        lab.node_set = data[2]
        lab.selected_nodes = data[3]
        lab.is_slided = data[4]
        lab.is_select_enabled = data[5]
        print lab.is_select_enabled
        lab.save()