Django: フォームを使用して 1 つのテンプレートに複数のモデルを作成する [closed] 質問する

Django: フォームを使用して 1 つのテンプレートに複数のモデルを作成する [closed] 質問する

私はサポート チケット追跡アプリを構築しており、1 つのページから作成したいモデルがいくつかあります。チケットは ForeignKey を介して顧客に属します。メモも ForeignKey を介してチケットに属します。顧客を選択するオプション (これは完全に別のプロジェクトです) または新しい顧客を作成し、チケットを作成し、最後に新しいチケットに割り当てられたメモを作成するオプションが必要です。

私は Django を使い始めたばかりなので、反復的に作業し、そのたびに新しい機能を試す傾向があります。ModelForms を試したことはありますが、一部のフィールドを非表示にして、複雑な検証を行いたいと思っています。私が求めているレベルの制御には、フォームセットを使用するか、すべてを手作業で行う必要があり、面倒な手作業でコーディングされたテンプレート ページも必要になるようですが、これは避けたいと考えています。

見逃している素敵な機能はありますか? フォームセットの使用に関する良い参考資料や例をお持ちの方はいませんか? フォームセットの API ドキュメントを週末中ずっと調べましたが、まだわかりません。すべてを分解して手動でコーディングするのは設計上の問題でしょうか?

ベストアンサー1

これは実装するのがそれほど難しくありませんモデルフォームフォーム A、B、C があるとします。各フォームとページを印刷し、POST を処理する必要があります。

if request.POST():
    a_valid = formA.is_valid()
    b_valid = formB.is_valid()
    c_valid = formC.is_valid()
    # we do this since 'and' short circuits and we want to check to whole page for form errors
    if a_valid and b_valid and c_valid:
        a = formA.save()
        b = formB.save(commit=False)
        c = formC.save(commit=False)
        b.foreignkeytoA = a
        b.save()
        c.foreignkeytoB = b
        c.save()

ここカスタム検証のドキュメントです。

おすすめ記事