モデルフォームの外部キーのデフォルト値をクエリセットの最初の項目に設定したいと考えています。
クエリセットはフォームのinitメソッドで動的に生成され、95% の確率でユーザーが最初のアイテムを選択するように順番に返されます。
デフォルト値をクエリセットの最初の項目に設定するにはどうすればよいですか?
フォームの init メソッドでこれを試しましたが、うまくいかないようです:
self.fields['my_foreignkey_field'].initial = self.fields['my_foreignkey_field'].queryset[0]
ビューで「set_trace」を使用すると、実際には正しい値に設定されていることがわかりmy_form['my_foreignkey_field'].field.initial
ますが、テンプレートの選択フィールドに入力されていません。
フォームの init メソッドの詳細は次のとおりです。
def __init__(self, *args, **kwargs):
super(My_Form, self).__init__(*args,**kwargs)
if self.instance.some_fk_field.some_value > 0:
self.fields['important_fk_field'].queryset = self.get_important_queryset()
if self.instance.some_fk_field.some_value == 1:
#set the default
self.fields['important_fk_field'].initial = self.fields['important_fk_field'].queryset[0].pk
else: #foreignkey should be null
self.fields['important_fk_field'].queryset = FK_Model.objects.filter(pk=-1) #Empty queryset