3

私は2つのモデルを持っています

   class A(models.Model):
        name = models.CharField(50)
        type = models.CharField(50)

   class B(models.Model):
        field1 = ForeignKeyField(A)
        value = IntegerField()

ModelFormSet (モデル A から) を介して多数のフォームを表示したいと思います。フォームのそれぞれは、オブジェクトに接続されているすべてのオブジェクトに対して (モデル B から) InlineFormSets を順番に表示します。

djangoビューのsaveメソッドでモデルフォームセット(モデルA)とインラインフォームセット(mdoel B)の両方を組み合わせるにはどうすればよいですか?

4

2 に答える 2

1

私は一週間前にこれに苦労しました。inlineformset_factory メソッドの使用を開始することをお勧めします: https://docs.djangoproject.com/en/dev/topics/forms/modelforms/

次に、基本フォームとフォームセットをビューに追加してレンダリングします。

これを理解するのに役立つブログ投稿を次に示します。http://charlesleifer.com/blog/djangos-inlineformsetfactory-and-you/

クラスベースのビューを使用して機能させるソリューションもあります: http://haineault.com/blog/155/

于 2012-08-13T07:14:39.517 に答える
0

これが良い解決策かどうかはわかりませんが、私が思いつくことができる唯一の解決策です。

辞書のリストを作成します。各ディクショナリには、B クラスのフォームを保持する baseForm キーと、クラス A の inline_formset を保持する inline_forms キーがあります。

ビューコードでリストを反復処理し、それに応じてフォームを印刷します。フォーム送信ボタンごとに異なる値を生成します。たとえば、最初のフォーム etch の submit_1 ..

フォームが送信されたら、この値 (送信ボタンの値) を確認します。たとえば、値が submit_2 の場合、リストの 2 番目のアイテム/フォームが送信されたことを確信できます。それらから、送信されたデータの処理を開始できます。

于 2012-08-13T08:04:12.773 に答える