无法初始化绑定表单上的ModelForm字段?

时间:2013-01-10 15:19:41

标签: django django-forms

当我尝试创建像

这样的ModelForm时
MyModelForm(instance=a_model_instance_)

似乎Django阻止在表单的__init__方法中设置任何初始模型字段,例如:

def __init__(self, *args, **kwargs):
    super(MyModelForm, self).__init__(*args, **kwargs)

    if self.instance.pk:
        if self.instance.my_field:
            my_field = self.instance.my_field
        else:
            # show parent's field instead
            my_field = self.instance.parent.my_field

        self.fields['my_field'].initial = my_field

有什么理由为什么在表单绑定到实例后,初始化表单__init__方法中的字段不再起作用了?

1 个答案:

答案 0 :(得分:4)

我认为你想从其他模型字段值设置字段的初始值,如果它是None:

def __init__(self, *args, **kwargs):
    super(MyModelForm, self).__init__(*args, **kwargs)

    if self.instance.pk:
        if not self.initial.get('my_field'):
            self.initial['my_field'] = self.instance.parent.my_field