2

シンプルなビューのテンプレートで、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クラスベースのビュー

4

0 に答える 0