我是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
是该属性的默认值。这有关系吗?
我该如何解决这个问题?
答案 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()