我有一个包含多个字段的 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())
我需要这样的东西:-
Class PaymentsForm(forms.form):
invoice = forms.CharField(widget=ValueHiddenInput())
total = forms.CharField(widget=ValueHiddenInput())
item_name[n] = forms.CharField(widget=ValueHiddenInput())
谢谢,
理查德。
最佳答案
您可以在表单的 __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__
方法的参数,如下所示:
def __init__(self, repetitions, *args, **kwargs):
super(PaymentsForm, self).__init__(*args, **kwargs)
for i in xrange(repetitions):
self.fields['item_name_%d' % i] = forms.CharField(widget=forms.HiddenInput())
然后在您的 View 中(或您创建表单的任何地方):
payments_form = PaymentsForm(10)
关于python - Django - 以一种形式重复n次表单字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1205626/