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

How to keep files in the formset after page reload? . Django

花了几天时间想弄明白。也许这对你来说只是一个简单的问题,但是,无论如何......

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

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

我的看法如下:

# 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 个字段的相互数据,因此我无法将此验证移动到表单字段中的验证器。无论如何都需要清理数据来比较 2 个字段。

可以通过应用程序完成"file_resubmit"