djangoフォームを使用して可変数のフィールドを持つことは可能ですか?
具体的なアプリケーションは次のとおりです。
ユーザーは、画像アップロード フォームに好きなだけ画像をアップロードできます。写真がアップロードされると、写真に名前と説明を付けるページが表示されます。写真の数は、ユーザーがアップロードすることを選択した数によって異なります。
では、可変数の入力フィールド(必要に応じて引数として渡すことができます)を使用して django にフォームを生成させるにはどうすればよいでしょうか?
編集:ジェフバウアーの回答で言及された記事が書かれて以来、いくつかのことが変更されました。
つまり、動作していないように見えるこのコード行:
# BAD CODE DO NOT USE!!!
return type('ContactForm', [forms.BaseForm], { 'base_fields': fields })
だからここに私が思いついたものがあります...
私が使用した答え:
from tagging.forms import TagField
from django import forms
def make_tagPhotos_form(photoIdList):
"Expects a LIST of photo objects (ie. photo_sharing.models.photo)"
fields = {}
for id in photoIdList:
id = str(id)
fields[id+'_name'] = forms.CharField()
fields[id+'_tags'] = TagField()
fields[id+'_description'] = forms.CharField(widget=forms.Textarea)
return type('tagPhotos', (forms.BaseForm,), { 'base_fields': fields })
注意タグ付けは django の一部ではありませんが、無料で非常に便利です。確認してください:django-tagging