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

2024-10-01 02:29:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我不熟悉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/')

Tags: djangoinstanceform名称ifisrequestsave
1条回答
网友
1楼 · 发布于 2024-10-01 02:29:39

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

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

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

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

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

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

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

以下是实现上述功能的一些代码:

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})

相关问题 更多 >