当我尝试创建像
这样的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__
方法中的字段不再起作用了?
答案 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