页面重新加载后如何将文件保留在表单集中? 。 Django

时间:2019-04-13 07:17:09

标签: django django-forms django-views django-validation

花了几天时间才弄清楚。也许这对您来说只是一个简单的问题,但是,无论如何……

我有一个内联表单集中的表单视图,该视图可以接收和保存文件以及主要模型表单本身中的几个文本字段。

问题是当表单+表单集填充有主表单的文本数据和表单集的文件时,如果主表单无效,页面将被重新加载并且表单集的文件将会丢失,我必须再次附加它们。我希望以某种方式解决这种情况,即重新呈现页面后也将存在文件,但是,不幸的是我找不到解决方案。

我的看法如下:

# only the portion that in charge for the above-mentioned logic
# files are getting lost in form2. With form 1 everything is OK

def viewname(request):
    if request.method == 'POST':
        form1 = MainForm(request.POST, request.FILES, prefix="form1")
        if form1.is_valid():
            prim = form1.save(commit=False)
            prim.author = request.user
            form2 = inline_formset(request.POST, request.FILES,
                                              prefix="form2", instance=prim)
        else:
            form2 = inline_formset(request.POST, request.FILES, prefix="form2")
            context = {"form1": form1, "form2": form2}
            return render(request, "create.html", context)

…
…
…

页面的重新加载是由表单中的clean()方法引起的。它验证2个字段的相互数据,因此我无法将此验证移到表单字段中的验证器。无论如何,都需要获取干净的数据来比较两个字段。

1 个答案:

答案 0 :(得分:0)

可以通过应用程序“ file_resubmit”完成