如何在Django表单中将字段设置为只读?我知道如何禁用字段,但这不是我想要的。任何帮助,将不胜感激。
答案 0 :(得分:19)
定义attrs
时,您可以使用可选的Field
参数。即:
somefield = forms.CharField(
widget=forms.TextInput(attrs={'readonly':'readonly'})
)
答案 1 :(得分:9)
在Django 1.9+
:
somefield = forms.CharField(disabled=True)
答案 2 :(得分:8)
在Field.disabled属性中的 django 1.9 :https://docs.djangoproject.com/en/1.9/ref/forms/fields/#disabled
禁用的boolean参数设置为True时,使用禁用的HTML属性禁用表单字段,以便用户无法编辑它。即使用户篡改了提交给服务器的字段值,也会忽略该格式以支持表单初始数据中的值。
,否则强>
使用小部件'readonly'属性
class PatientForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(PatientForm, self).__init__(*args, **kwargs)
self.fields['field'].widget.attrs['readonly'] = True
class Meta:
model = Patient
答案 3 :(得分:0)
这是我让它在 Js 中工作的唯一方法:
function myFieldOnChange() {
var myField= document.getElementById("myFieldID")
myField.setAttribute('readonly', true)