我正在尝试运行一个简单的更新表单,该表单应该更新从表单提交的数据库中的所有对象值。
这是我的更新视图,除了重定向到“/”之外什么都不做。没有错误但也没有更新。
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:
...
答案 0 :(得分:2)
您没有更新任何字段,请使用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
基于类的通用视图,而不是基于函数的视图:
显示用于编辑现有对象的表单的视图, 重新显示带有验证错误的表单(如果有的话)和 保存对象的更改。这使用自动生成的表单 来自对象的模型类(除非手动使用表单类) 指定)。