1

フォームセットが有効であっても、空のcleaned_dataを返すフォームセットがあります。私の見解は次のようなものです。

def edit_files(request):
    file_formSet = formset_factory(FileUploadForm)
    if request.POST:
        formset = file_formSet(request.POST, request.FILES)
        if formset.is_valid():
            for form in formset:
                form_data = form.cleaned_data
                if form_data:
                    up_file = upload_file(form_data['file'])
    else:
        formset = file_formSet()

    return render_to_response('edit_files.html', {'formset': formset})

これはアップロードフォームであり、この問題でファイルを保存できませんupload_fileは、実装されたメソッドの1つであり、正常に機能します。これをテストしました。

4

5 に答える 5

1

わかりました。トピックを完成させたいので、同じ問題が発生した場合は、このページを使用して解決できます。このソリューションの主な鍵は次のとおりです。1-暗号化タイプを忘れないでください。2-機能ごとに異なるフォームを使用してください。

したがって、テンプレートでは次を使用する必要があります。

<form method="POST" action="." encrypt="multipart/form-data">

次のようなファイルの追加と削除には2つの別々のフォームを使用します。これはファイルの追加に使用します。

<form method="POST" action="." encrypt="multipart/form-data" id="add_file">

そしてこれはファイルを削除するためのものです:

<form method="POST" action="." encrypt="multipart/form-data" id="delete_file">
于 2012-09-22T11:10:54.937 に答える
1

の後に括弧()を追加するのを忘れたときに、同じエラーメッセージが表示されましたis_validFormset.is_validが返されましたが、クリーンアップされたデータを返すために関数が呼び出されなかったというTrue理由だけで、クリーンアップされたデータはありませんでした。is_valid()

于 2017-05-10T16:47:29.467 に答える
0

次の行を変更する必要があると思います。

... snip ... 

for form in formset.forms:
    form_data = form.cleaned_data

... snip ...

.formsフォームセットからパーツが欠落しているようです。

于 2012-09-08T13:27:11.207 に答える
0

いくつかのブレークポイントを使用した後、実際にはリクエストのせいであることがわかりました。request.FILESは空です。

于 2012-09-18T18:47:03.600 に答える
0

あなたのすべての答えのためのtnx、私は問題を解決しました、私は2つの機能を持つ1つのフォームを持っていました:それらを分離した後のadd_fileとdel_file、すべてが大丈夫でしたが、いくつかのファイルを追加した後のページの外観に問題があります、3ファイルのように、次にrequest.POSTが送信され、再びページに戻ります。実際には、1行ではなく、3行のファイル入力が表示されます。これにより、アドバイスの美しさが実際に低下しますか?

于 2012-09-22T08:05:27.520 に答える