CharFieldの数を変えて動的フォームを作成しようとしています。私は自分のフォームの中で半恣意的な場所に自由に表示できるようにしたい。私のアプローチは、正しいself.fields [INDEX]をフィールドする反復可能な関数を作成することでした。私は予想通りCharFieldですが()レンダリング作るにはどうすればよいDjangoカスタムフォームを反復する
<django.forms.fields.CharField object at 0x80bae6be0>
<django.forms.fields.CharField object at 0x80bae6f98>
<django.forms.fields.CharField object at 0x80bae6da0>
:しかし、私はこれを行うとき、私は、文字通り、これを参照してください?
私のコードは以下の通りです:
class ImplementationForm(forms.ModelForm):
"""
Specifies the implementation of a given control.
"""
class Meta:
model = Implementation
fields = ['implemented', 'scope', 'separate']
def __init__(self, *args, **kwargs):
control = kwargs.pop('control')
super(ImplementationForm, self).__init__(*args, **kwargs)
self.fields['separate'].widget.attrs.update({'class': 'separate'})
self.fields['scope'].widget.attrs.update({'class': 'scope'})
for substatement in control.substatement.all():
self.fields['statement_%s'%substatement.pk] = forms.CharField()
def subfield(self):
print("Comes herE")
for index in self.fields:
if index[:10] == 'statement_':
yield self.fields[index]
テンプレートは、基本的にはこの行います。あなたが探しているものを
{% for x in myform.subfield %} {{ x }} {% endfor %}
['FormSet'](https://docs.djangoproject.com/ja/1.10/topics/forms/formsets/)の使用をお勧めします。彼らはあなたが箱から要求する機能を提供します。 – erikgaal