我想将modelform foreignkey的默认值设置为查询集中的第一项。
查询集在表单 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