2015-11-05 58 views
0

我在用戶提交表單後試圖修改一個域。我在網上找到了幾段代碼,但似乎沒有任何工作。以下是我在views.py中的嘗試。任何指導將不勝感激。在Django中設置表單域的值

def newlisting(request): 
    if request.method == "POST": 
     form = ListingsForm(request.POST) 
     if form.is_valid(): 
      form.cleaned_data['condition'] = 1 #form.condition = 1 also fails 
      form.save() 
      return redirect('/listings/') 
     else: 
      form = ListingsForm() 
      return render(request, 'newlisting/newlisting.html', {'form':form}) 

回答

2

,你可以這樣做:

def newlisting(request): 
    if request.method == "POST": 
     form = ListingsForm(request.POST) 
     if form.is_valid(): 
      obj = form.save(commit=False) 
      obj.condition = 1 
      obj.save() 
      return redirect('/listings/') 
    else: 
     form = ListingsForm() 
    return render(request, 'newlisting/newlisting.html', {'form':form}) 
+0

完美。你能解釋一下'form = form.save(commit = False)'請問 – JShell

+0

@JShell這個save()方法接受一個可選的commit關鍵字參數,它接受True或False。如果使用commit = False調用save(),那麼它將返回一個尚未保存到數據庫的對象。如果要在保存對象之前對對象執行自定義處理,這很有用。有關更多詳細信息,請查看 - > https://docs.djangoproject.com/en/1.8/topics/forms/modelforms/#the-save-method –

+0

稍微誤導以調用form.save()的結果「 - 不是,它是對象。最好做'obj = form.save(commit = False); obj.condition = 1; obj.save()'。 –