在Django的自定义表单中使用循环

在Django的自定义表单中使用循环,django,forms,loops,Django,Forms,Loops,我正在Django中创建一个自定义表单,它从4个不同的元素开始: class InputForm(forms.Form): date = forms.DateField() item1 = forms.CharField() amount1 = forms.CharField() category1 = forms.CharField() 我想将其扩展到包括任意数量的项目、金额和类别 item2 = forms.CharField() amoun

我正在Django中创建一个自定义表单,它从4个不同的元素开始:

class InputForm(forms.Form):
    date = forms.DateField()
    item1 = forms.CharField()
    amount1 = forms.CharField()
    category1 = forms.CharField()
我想将其扩展到包括任意数量的项目、金额和类别

    item2 = forms.CharField()
    amount2 = forms.CharField()
    category3 = forms.CharField()
    item3...
我尝试设置以下循环,但没有成功。有人知道如何使循环工作,或者知道我可以避免键入item2、item3、item4等的另一种方法吗

items = []
amounts = []
categories = []

for i in range(1,3):
    items.append('item' + str(i))
    amounts.append('amount' + str(i))
    categories.append('category' + str(i))

class InputForm(forms.Form):
    for x in items:
        x = forms.CharField()
    for y in amounts:
        y = forms.CharField()
    for z in categories:
        z = forms.CharField()

我想你要找的是。例如:

class InputForm(forms.Form):
    item = forms.CharField()
    amount = forms.CharField()
    category = forms.CharField()

InputFormSet = formset_factory(InputForm)
然后使用
InputFormSet
管理表单集合。如果您需要数量可变且彼此不相关的项目、金额和类别,则可以使用多个表单集