我正在尝试运行一个简单的更新表单,该更新表单应该更新从该表单提交的数据库中的所有对象值。
这是我的更新视图,除了重定向到“ /”之外什么也没有。没有错误,也没有更新。
def update(request, business_id):
if request.method == 'POST':
form = BusinessForm(request.POST)
if form.is_valid():
t = Business.objects.get(id=business_id)
t.save()
return HttpResponseRedirect("/")
else:
...
最佳答案
您没有更新任何字段,请使用form.cleaned_data
获取表单字段值:
一旦is_valid()返回True,则成功验证表单数据
将以form.cleaned_data字典的形式出现。该数据将
为您很好地转换成Python类型。
if form.is_valid():
t = Business.objects.get(id=business_id)
t.my_field = form.cleaned_data['my_field']
t.save()
另外,考虑使用基于
UpdateView
基于类的通用视图,而不是基于函数的视图:显示用于编辑现有对象的表单的视图,
重新显示带有验证错误的表单(如果有),并且
保存对对象的更改。这使用自动生成的表格
来自对象的模型类(除非手动创建表单类)
指定)。