2016-09-29 6 views
3

のは、私はいくつかのFileFieldsで(ジャンゴ)Formクラスを宣言しようとしているとしましょう:DRY方法

class = MyForm(forms.Form): 
    file_0 = forms.FileField() 
    file_1 = forms.FileField() 
    ... 

私は宣言するために、約20シーケンシャル入力を持っている - への最善の方法だ何これを一口のようにすべて入力しないでください。

+1

formsetsを見てください。 –

+0

私はそれがそうすることができることを知っていますが、私は "軽量"の方法があるかどうか調べようとしています。 – Escher

答えて

4

あなたはDjangoのダイナミックなフォーム生成

from django import forms 

class MyForm(forms.Form): 

    def __init__(self, *args, **kwargs): 
     super(MyForm, self).__init__(*args, **kwargs) 

     for i in range(20): 
      self.fields["file_%d" % i] = forms.FileInput() 

参照ドキュメントhereを使用することができます。

1

は、ループを使用します。

files = [forms.FileInput() for i in range(20)] 
+0

もちろん、これらのファイルは索引でアクセスする必要があります。 'files [0]' – brianpck

+0

Metaクラスがこれらのクラスにどのようにアクセスするのか、クラスメソッドがそのようなリストの中にある場合、クラスメソッドがフィールドにどのようにアクセスするのかはわかりません。 – Escher

関連する問題