Django在一个表单中重复一个表单域n次

2024-10-03 15:27:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Django表单,里面有几个字段,其中一个需要重复n次(在设计时不知道n个字段),我该如何编码(如果可能的话)?在

例如,代替:

Class PaymentsForm(forms.form):
    invoice = forms.CharField(widget=ValueHiddenInput())
    total = forms.CharField(widget=ValueHiddenInput())
    item_name_1 = forms.CharField(widget=ValueHiddenInput())
    item_name_2 = forms.CharField(widget=ValueHiddenInput())
    .
    .
    .
    item_name_n = forms.CharField(widget=ValueHiddenInput())

我需要这样的东西:

^{pr2}$

谢谢,
理查德。在


Tags: djangonameform表单编码formsinvoicewidget
2条回答

使用formsets。在

您可以在表单的__init__方法中创建重复字段:

class PaymentsForm(forms.Form):
    invoice = forms.CharField(widget=forms.HiddenInput())
    total = forms.CharField(widget=forms.HiddenInput())

    def __init__(self, *args, **kwargs):
        super(PaymentsForm, self).__init__(*args, **kwargs)
        for i in xrange(10):
            self.fields['item_name_%d' % i] = forms.CharField(widget=forms.HiddenInput())

关于动态表单的更多信息可以找到,例如here

编辑:要回答您评论中的问题:只需将重复次数作为__init__方法的参数,如下所示:

^{pr2}$

然后在您的视图中(或创建表单的任何位置):

payments_form = PaymentsForm(10)

相关问题 更多 >