Django更新数据库中的对象

时间:2014-05-30 16:23:49

标签: python django django-forms django-views

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

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

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:
          ...

1 个答案:

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

  

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