Djangoでフォームを作成する時、forms.pyにフィールド内容を記載していきますが、状況によって表示させるフィールドの数を増減させたい時があると思います。
私の場合はDBに登録されたデータ数分のフィールドを表示する必要がありました。
Django 動的にフォームのフィールドを作成
次のようなアプリを作成例として説明します。

確定ボタン押下でフォーム数に入力されている数値分のテキストボックスが表示されます。
動的フォームのフィールド作成方法
forms.py:定義のみで中身は特に記述不要です。
# 動的フォーム
class FrmDynamicForm(forms.Form):
pass
html:viewから渡されるフォームを記載するだけです。
{{ dym_form }}
views.py:変数「cnt」に入力されたフォーム数が格納されています。(取得方法の説明は省略)
dym_form = FrmDynamicForm(request.POST)
for val in range(0, cnt):
dym_form.fields[val] = forms.CharField(label="値" + str(val+1))
動的フォームのフィールド情報取得方法
動的に作成したフィールドに入力された情報の取得方法です。

for val in range(0, cnt):
if str(val) in request.POST:
request.POST[str(val)]
# 3
# 5
# 9
二行目のif文は、取得要素が含まれているかどうかを見ており、上記例ではループ回数とフォーム数が一致しない状況が発生した場合、判定で弾かれてエラーとなるのを防いでいます。
コメント