シンプルなビューのテンプレートで、django フォームから直接インライン フォームセットを表示するシンプルな (DRY) 方法があるかどうかを理解したいと思います。フロッピーフォームまたはその他のサードパーティ製アプリの使用は認められています。
次のような 2 つ (またはそれ以上) の単純なモデルがあるとします。
class ModelA(models.Model):
field_a_one = models.CharField()
field_a_two = models.CharField()
class ModelB(models.Model):
field_rel_a = models.ForeignKey(ModelA)
field_b_one = models.CharField()
OneToMany 関係の代わりに、ManyToMany 関係を持つことができます。
私が望むのは、最も単純な形で、私のテンプレートでできることです:
{{ model_a_form }}
次のようなものを取得します。
field_a_one [ input ]
field_a_two [ input ]
field_b_one [ input ]
[Delete]
[ add one more ]
...管理画面で起こることと同様です。
次に、ビューで、次のことだけを行う必要があることを望みます。
クラス ModelAView(UpdateView):
model = ModelA
動作をカスタマイズするための ModelAForm があります。含めるフィールド、順序など - django フォームの場合と同様 - ただし、インライン関係とそのカスタマイズ (例: 表形式かどうかなどのデフォルトの html テンプレート) を含みます。管理者が行うことと非常によく似たものだと思います。
SO で見つけた最も近い Q/ A は、モデル フォームから Generic_inlineformset_factory を使用してフォームを作成することですが、オールインワンのソリューションは提供しません。
これもあります: http://haineault.com/blog/155/ブログですが、ここでも自分でビューにフォームセットをプロビジョニングする必要があります。これは私には「DRY」とは思えません! より良い解決策はありますか?
そのブログを指すより関連する質問についてですが、コメントはアプローチについてあまり肯定的ではありません:インラインモデルフォームまたはフォームセットを使用したdjangoクラスベースのビュー