2015-11-05 51 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()'。 –