让django modelchoicefield readonly true

时间:2017-02-08 17:42:38

标签: jquery django

在我的编辑页面上,我试图允许用户编辑/更改他们输入的内容,但有一个条件是他们无法编辑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

有解决方案的人......?

提前致谢

1 个答案:

答案 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']