为django modelform foreignkey字段设置动态默认值

时间:2012-11-01 13:46:43

标签: django django-forms

我想将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

0 个答案:

没有答案