2014-09-01 60 views
0

的情況下「更新」屬性我relativly新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') 

問題是,顯然不是保存新的屬性值。 對於第一個打印語句,它返回True,它應該是什麼。 但是對於第二個打印語句,它返回False,這不是我所期望的。 但是False是該屬性的默認值。那是相關的嗎? 我該如何解決這個問題?

回答

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() 
+0

我得到這個解決方案同樣的結果......如果 – efkin 2014-09-01 11:00:56

+0

校驗字段值是可編輯 – ruddra 2014-09-01 11:12:50

+0

怎麼樣?在models.py中is_select_enabled被定義爲'is_select_enabled = False' – efkin 2014-09-01 11:17:19