フォームセットにフォームを手動で表示したいと思います。
{{ formset.form1 }} のようなことを実行して、最初のフォームを表示することができます。それ、どうやったら出来るの?
フォームセットの最初のフォームでは、組み込みフィルターを試すことができますfirst
:
{{ formset|first }}
Django のテンプレートは、設計上厳しく制限されているため、 Jinja2 を確認することをお勧めします。Jinja では、次のように記述できるはずです。
{{ formset[0] }} {{ formset[3] }}
Django にはget_item
フィルターがないため、次のようなカスタム フィルターを作成できます。
@register.filter
def get_item(ob, key):
try:
return ob[key]
except (TypeError, ValueError, KeyError, IndexError):
return None
このフィルターを使用すると、次のように記述できるはずです。
{{ formset|get_item:0 }} {{ formset|get_item:3 }}
フォームセットをループして個々のフォームを取得し、これらのフォームで好きなことを行うことができます。
{% for form in formset %}
{{form.title.errors}}
{{form.title.label}}
{{form.title}}
{% endfor %}