Django–;禁用模型表单字段

Django–;禁用模型表单字段,django,django-forms,Django,Django Forms,如何禁用某些ModelForm字段以指示它们不可编辑?似乎建议将小部件设置为disabled应该可以做到这一点,包括使其具有防篡改功能,但是由于禁用的字段为空,因此执行表单验证失败。(同样尝试使用也改变了方法,但似乎不适用于ModelForms,也没有提供等价物…) 或者,我尝试在ModelForm级别设置clean方法,将字段设置为引用实例的值,但在达到该值之前验证失败 一些示例代码: #forms.py 类MyForm(forms.ModelForm): 类元: model=MyModel

如何禁用某些ModelForm字段以指示它们不可编辑?似乎建议将小部件设置为
disabled
应该可以做到这一点,包括使其具有防篡改功能,但是由于禁用的字段为空,因此执行表单验证失败。(同样尝试使用
也改变了
方法,但似乎不适用于ModelForms,也没有提供等价物…)

或者,我尝试在ModelForm级别设置
clean
方法,将字段设置为引用实例的值,但在达到该值之前验证失败

一些示例代码:

#forms.py
类MyForm(forms.ModelForm):
类元:
model=MyModel
字段='\uuuu所有\uuuu'
小部件={
“slug”:forms.TextInput(attrs={
“已禁用”:True
})
}
#views.py
def edit_mymodel(请求,slug:str=None):
实例=获取对象或404(MyModel,slug=slug)
form_myform=myform(request.POST或None,instance=instance)
如果request.method==“POST”:
如果表单\u myform.is\u有效():
#失败,因为slug在POST请求中为空
通过

禁用将使输入不可编辑,但将与其他字段一样工作,对此场景使用只读

Works。但是为什么呢?因为只读字段不会在html验证中被检查
    widgets = {
            'slug': forms.TextInput(attrs={
                'readonly': True
            })
        }