field1 = forms.ModelChoiceField(queryset=...)
がどのように選択されたとして私のフォームに値を表示することができますか?
field1 = forms.ModelChoiceField(queryset=...)
がどのように選択されたとして私のフォームに値を表示することができますか?
デフォルトの初期値を設定する場合はinitial
をset it to the id instead以外の他のフォームフィールドと同じように定義する必要があります。
は、あなたがこのようなfield1
を持って言う:
class YourForm(forms.Form):
field1 = forms.ModelChoiceField(queryset = MyModel.objects.all())
あなたは、このようなフォーム作成する際には、初期設定する必要があります。
form = YourForm(initial = {'field1': instance_of_mymodel.pk })
いうより:
form = YourForm(initial = {'field1': instance_of_mymodel })
を
あなたのモデルに__unicode__
を定義したと仮定しているので、このdisp正しく寝る。
あなたはそれがより一般的な方法は、他の答えだなどを選択した最初の値を作るために
field1 = forms.ModelChoiceField(queryset=..., initial=0)
を使用することができます。彼らは変更されている
Djangoのどのバージョンがこれに対応していますか?バージョン1.8では私にとってはうまくいかないようです。 – BudgieInWA
[ソースコード](https://github.com/django/django/blob/1.8.11/django/forms/models.py#L1127-L1130)から確認して、これが機能していることを自分自身でテストします'django> = 1.8'のために。 '> = 1.4'を含むすべてのバージョンでこれがうまくいくはずです。 – Yeo
回:
は、デフォルトの初期値は、今、あなたの代わりに IDに設定除いて、他のフォームフィールドのようなinitial
を定義することによって設定することができます。
さて、これで十分です:
form = YourForm(initial = {'field1': instance_of_mymodel })
両方がまだ動作しますが。
"時間が変わった "ようになったので、実行しているDjangoのバージョンを指定してください。いくつかの変更は1.2にアップグレードされる可能性があります... – scoopseven
あなたにもこれを行うことができます:
form = YourForm(initial = {'field1': pk })
を使用すると、インスタンスは必要ありませんクエリ文字列を介して、またはAJAX呼び出しを介して、あなたの主キーを解析している場合、クエリセットは、あなたのドロップのためのことをすでに扱っていますダウン、PKインデックスは状態あなたは
コードたい
form = YourForm(initial = {'field1': instance_of_mymodel.pk })
と
直接次form = YourForm(initial = {'field1': instance_of_mymodel })
または初期フィールド:
field1 = forms.ModelChoiceField(queryset=..., initial=0)
すべての作業。
最初の2つの方法は最終的な方法よりも優先されます。
この執筆時点でのバージョンはわかりませんが、この質問は時代遅れです。 Django 1.5では、執筆時点で、これらの方法の両方が動作します。 – JcKelley
私は '__init __()に予期しないキーワード引数field1が見つかりました。 ' – dashesy