mzu*_*mzu 3 django django-forms
当我尝试创建一个 ModelForm 时
MyModelForm(instance=a_model_instance_)
Run Code Online (Sandbox Code Playgroud)
似乎 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
Run Code Online (Sandbox Code Playgroud)
__init__一旦表单绑定到实例,是否有任何理由为什么在表单的方法中初始化字段不再起作用?
我认为您想从其他模型字段值设置字段的初始值,如果它是 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
934 次 |
| 最近记录: |