在Django中,如何在表单中一次更新所有值?

时间:2014-09-18 05:03:10

标签: python django django-forms

我是Django的新手,并试图用它来创造一些东西。我坚持让它来更新我想要的行。我不想添加一行。我相信为了做到这一点,我必须通过某种循环单独设置值。那是对的吗?我如何创建一个循环,以便它可以在不知道列名称的情况下分配值?

if request.POST:
        form = GeneralConfigurationUpdateForm(instance=instance, request.POST)
        if form.is_valid():
            instance = form.save(commit=False)
            #
            # HERE I NEED TO SET ALL THE VALUES for the row in GeneralConfiguration models
            #
            messages.add_message(request, messages.SUCCESS, "You update was successfull")
            return HttpResponseRedirect('generalconfig/update/')

1 个答案:

答案 0 :(得分:0)

要更新某些内容,以下是一般流程:

  1. 尝试从主键中获取对象,主键通常作为名为pk的参数从URL传入。

  2. 如果此pk无效,请显示错误页面。

  3. 使用此pk获取对象,然后使用它作为实例初始化ModelForm

  4. 使用请求中的数据验证此表单。

  5. 如果此表单有效,请执行form.save(),这将更新记录。

  6. 将用户重定向到感谢页面(以防止重新加载页面并进行多次更新)。

  7. 以下是一些实现上述内容的代码:

    def update_something(request, pk=None):
       something = get_object_or_404(SomethingClass, pk=pk)
       form = SomethingForm(request.POST or None,
                            request.FILES or None, instance=something)
       if form.is_valid():
           form.save() # This does the magic of updating the record with
                       # the data from the form
           return redirect('/thanks')
       else:
           return render(request, 'update_form.html', {'form': form})