def resume_edit(request, r_id):
r = Resume.get.object(pk=r_id)
resume = ResumeModelForm(instance=r)
resume.fields['email'].widget.attrs['readonly'] = True
return render(request, 'resumes/resume.html', context)
我试图这样做,但它不起作用,我知道如何在Forms.py中做到这一点,但我想在视图中知道它可能与否?
我正在使用Django 2.0
答案 0 :(得分:2)
是的,自documentation起,某个字段的django-1.9属性可设置为True
:
所以我们可以使用:
def resume_edit(request, r_id):
r = Resume.get.object(pk=r_id)
resume = ResumeModelForm(instance=r)
resume.fields['email'].disabled = True
return render(request, 'resumes/resume.html', context)
这不仅可以确保禁用相应表单部分的HTML,还可以在发布 Form
时忽略可能的更改(请注意,您当然首先需要禁用字段。)
由于render(..)
调用会产生HTML,因此在呈现,验证或.save()
之前,该字段当然应该被更改。
.disabled
属性通常比使用readonly
等更好。因为某些表单元素有一种特殊的方法来禁用HTML级别的元素(有些使用disabled
代替)。此外,如前所述,它不仅禁用HTML级别的表单元素。如果用户想要发布恶性值,那么表单将忽略这些值。