2

異なるモデル クラスの 2 つのオブジェクトがあり、それぞれのフィールドを含むフォームを表示したいと考えています。これどうやってするの?

4

3 に答える 3

5

私のやり方は、 Meta属性を使用して、フォームに表示するために使用するフィールドのサブセットModelFormを指定する2つのクラスを作成することです。テンプレートに両方のフォームを表示し、ビューで処理します。fields

于 2008-12-13T15:00:04.383 に答える
0

2つの別々のフォームを作成するだけです。上記の人のアプローチの問題は、.save()が失われることです。フォームは実際には1つのデータセットを表すことを目的としており、各モデルのデータは実際には個別のデータセットです。これが、レンダリング時にフォームにタグが含まれない理由です。

于 2008-12-15T19:37:11.573 に答える
-2

私はこれを試したことがありませんが、コードで2つのModelFormクラスを定義してから、それぞれのコピーを作成してフィールドをそれ自体にコピーする新しいプレーンFormクラスを作成することができます。__init__ModelForm

何かのようなもの:

class DualForm(forms.Form):
    def __init__(self, *args, **kwargs):
        model1 = Model1Form(**kwargs)
        model2 = Model2Form(**kwargs)

        for f in model1.fields:
            self.fields[f] = model1.fields[f]

        for f in model2.fields:
            self.fields[f] = model2.fields[f]

class Model1Form(forms.ModelForm):
    ... your model form...

class Model2Form(forms.ModelForm):
    ... your other model form...

なぜうまくいかないのかわかりません。

データ引数をに渡して、ModelForms例外をトラップしてバブルアウトするようにしてください...フィールド名が競合している場合にどうなるかわかりません。それは面倒かもしれません...

于 2008-12-13T00:05:59.650 に答える