異なるモデル クラスの 2 つのオブジェクトがあり、それぞれのフィールドを含むフォームを表示したいと考えています。これどうやってするの?
質問する
1192 次
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 に答える