1

Django 1.3 FormWizard を使用して、次の 2 つの手順でファイルをアップロードしようとしています。

ドキュメントに続いて、私は書きました:

class CreateCheckWizard(FormWizard):
    def done(self, request, form_list):
        return HttpResponseRedirect('/my_checks/')
    def get_template(self, step):
        return ['create_check_%s.html' % step, 'create_check_1.html']

class CreateCheckForm1(forms.Form):
    my_file = forms.FileField()

class CreateCheckForm2(forms.Form):
    title = forms.CharField(max_length=255)

テンプレートの FORM タグに multipart/form-data を追加しました。 <form enctype="multipart/form-data" action="." method="post">

しかし、ファイルをアップロードしても、「このフィールドは必須です」というエラーが表示されます。

request.FILES フィールドを省略してフォームが作成されていると思います。FormWizard でファイルを正常にアップロードするには、その動作をどのように変更すればよいでしょうか?

form(request.POST)編集:Djangoのソースコードを見ると、ファイルを処理するのではなく、実際に使用してフォームを作成していform(request.POST, request.FILES)ます。ソースコードを変更せずにファイルをアップロードする方法はありますか?

4

1 に答える 1

5

これは、Django1.3フォームウィザードでは不可能です。Djangoフォームウィザードのドキュメントから:

重要な制限:ウィザードはHTMLの非表示フィールドを使用してページ間にデータを格納するため、最後のフォーム以外のフォームにFileFieldを含めることはできません。

Django 1.4フォームウィザードで可能です(ファイルの処理に関するドキュメントを参照)。Django 1.3を使用している場合は、新しいフォームウィザードを別のアプリとしてインストールできます。

于 2012-02-18T11:12:58.253 に答える