gpt4 book ai didi

python - 可以使用 Django 表单进行可变数量的输入吗?

转载 作者:IT老高 更新时间:2023-10-28 21:00:43 26 4
gpt4 key购买 nike

是否可以使用 django 表单拥有可变数量的字段?

具体应用是这样的:

用户可以在图片上传表单上上传任意数量的图片。上传图片后,它们将被带到一个页面,在那里他们可以为图片命名和描述。图片的数量取决于用户选择上传的数量。

那么我如何让 django 使用可变数量的输入字段生成表单(如果需要,可以作为参数传递)?

编辑:article mentioned in jeff bauer's answer 以来,一些事情发生了变化被写了。

即这行代码似乎不起作用:

# 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

最佳答案

是的,可以在 Django 中动态创建表单。您甚至可以将动态字段与普通字段混合搭配。

class EligibilityForm(forms.Form):
def __init__(self, *args, **kwargs):
super(EligibilityForm, self).__init__(*args, **kwargs)
# dynamic fields here ...
self.fields['plan_id'] = CharField()
# normal fields here ...
date_requested = DateField()

要更好地阐述这种技术,请参阅 James Bennett 的文章:所以你想要一个动态表单?

http://www.b-list.org/weblog/2008/nov/09/dynamic-forms/

关于python - 可以使用 Django 表单进行可变数量的输入吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/411761/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com