我正在尝试运行一个简单的更新表单,该更新表单应该更新从该表单提交的数据库中的所有对象值。

这是我的更新视图,除了重定向到“ /”之外什么也没有。没有错误,也没有更新。

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基于类的通用视图,而不是基于函数的视图:


  显示用于编辑现有对象的表单的视图,
  重新显示带有验证错误的表单(如果有),并且
  保存对对象的更改。这使用自动生成的表格
  来自对象的模型类(除非手动创建表单类)
  指定)。

10-07 18:58
查看更多