

Djangoでフォームを作るとき

[code]

    from django import forms
    
    class SampleForm(forms.Form):
         変数 = forms.CharField()
                 :  
    
[/code]

  
の様に書くと思うのですが，  
ユーザーの指定した個数のフォームが欲しい場合，

[code]

    配列[key] = forms.CharField()
    
[/code]

のような書き方ができないか調べています．  
どなたかご存じの方はおられないでしょうか．  
djangoのバージョンは2.1.2です.  
よろしくお願いいたします．


CC BY-SA 4.0
2018-10-30T10:32:24.803
49796
2018-10-30T14:25:32.507
2018-10-30T10:45:17.263
29708
29708
question
python python3 django
Djangoのフォームを任意個数生成する方法


自己解決しましたのでTipsとして残しておきます．  
コメントに書いたexecをつかった方法ではうまく行きませんでした．

サンプルコード

[code]

    #Formクラスのインポート
    from django import forms
    
    #空のクラスを用意
    class EmptyClass(forms.Form):
        pass
    
    #メインとなる関数
    def create_form(myary, *arg):
        f = EmptyClass(*arg)
        for val in myary:
            f.fields[val] = forms.CharField(label=val)
        return f
    
[/code]

このcreate_formにテンプレートで使いたい名前を入れた配列を投げてやれば，そのフィールドが入ったFormクラスを返してくれます．

引数の部分を辞書型配列に変えたりして使うと良さそう．

不備，不具合等あればご指摘いただけると幸いです．


CC BY-SA 4.0
2018-10-30T14:25:32.507
49807
2018-10-30T14:25:32.507
29708
49796
answer