1

我想将模型外键的默认值设置为查询集中的第一项。

查询集在表单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
4

0 回答 0