保存表单集文件字段失败

0 投票
1 回答
671 浏览
提问于 2025-04-18 04:42

我在尝试在一个表单集合中保存一个文件字段,但调试时出现了错误,提示'UploadPdfFormSet'对象没有'save'这个属性。我觉得关于在表单集合中处理文件的文档说明不够清楚。有没有人能帮我一下?

forms.py

    from django import forms

class UploadPdf(forms.Form):
    docfiles = forms.FileField(label='Browse')

class UploadPdfUrl(forms.Form):
    docurl = forms.URLField(label='Address')

views.py

    def upload(request):    
        UploadPdfFormSet = formset_factory(UploadPdf)
        if request.method == 'POST':
            formsetFile = UploadPdfFormSet(request.POST, request.FILES)     
            if formsetFile.is_valid():
                instances = formsetFile.save
                for form in instances:
                    form.save()

                return HttpResponse('yey')
        else:
            formsetFile = UploadPdfFormSet()
            formURL = UploadPdfUrl

        return render(request, 'pdfchecker/index.html', {
            'formsetFile': formsetFile, 'formURL': formURL,
            })



UPDATE: New view.py file which successfully saves file:

def upload(request):

    UploadPdfFormSet = formset_factory(UploadPdf)
    handleUploadPdfFormSet = modelformset_factory(handle_UploadPdf)
    if request.method == 'POST':
        formsetFile = UploadPdfFormSet(request.POST, request.FILES)
        formsetHandle = handleUploadPdfFormSet(request.POST, request.FILES)
        if formsetFile.is_valid():
            formsetHandle.save()

            return HttpResponse('yey')
    else:
        formsetFile = UploadPdfFormSet()
        formURL = UploadPdfUrl

    return render(request, 'pdfchecker/index.html', {
        'formsetFile': formsetFile, 'formURL': formURL,
        })

1 个回答

0

看起来你提到的是文档中的这个例子。不过这个例子主要讲的是ModelFormsets,而不是你正在使用的普通表单集。所以这里的保存方法不太适用。

  • 你可以使用ModelFormsets(当然前提是你的应用里有和UploadPdf表单对应的模型)
  • (更有可能的是)手动处理表单集的cleaned_data。就像在这个例子中那样。

撰写回答