是否可以使用 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 })
note 标记不是 django 的一部分,但它是免费的并且非常有用。看看:django-tagging