在我的编辑页面上,我试图允许用户编辑/更改他们输入的内容,但有一个条件是他们无法编辑Modelchoice字段。
所以,我尝试了这个命令,但它没有用。使用“readonly = True”用户仍然可以更改modelchoicefield“下拉文件”,而“disabled = True”用户无法更改modelchoicefield但是当他们尝试提交时他们收到此错误: “此字段是必填字段。”
myform.py
class NameForm(forms.ModelForm):
class Meta:
model=Name
fields = '__all__'
def __init__(self, *args, **kwargs):
super(NameForm, self).__init__(*args, **kwargs)
self.fields['names'].widget.attrs['disabled'] = 'True'
#self.fields['names'].widget.attrs['readonly'] = True
有解决方案的人......?
提前致谢
答案 0 :(得分:0)
我在我们的项目中也遇到了类似的情况,并进行了修复。因此,您可以尝试通过以下方式解决问题:
class NameForm(forms.ModelForm):
class Meta:
model=Name
fields = '__all__'
def __init__(self, *args, **kwargs):
super(NameForm, self).__init__(*args, **kwargs)
instance = getattr(self, 'instance', None)
# When in EDIT mode.
if instance and instance.id:
self.fields['names'].widget.attrs['disabled'] = 'True'
self.fields['names'].required = 'False'
def clean_event(self):
instance = getattr(self, 'instance', None)
# `disabled` field will have no form data,
# so we just use the previously saved value.
if instance and instance.pk:
return instance.names
else:
# When in CREATE mode.
return self.cleaned_data['names']