在CreateView中将字段设为只读,可以通过重写CreateView类的get_form方法来实现。get_form方法用于返回表单实例,在该方法中可以对字段进行自定义设置。
以下是一个示例代码,演示如何在CreateView中将字段设为只读:
from django.views.generic.edit import CreateView
from django import forms
class MyForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# 将字段设置为只读
self.fields['my_field'].widget.attrs['readonly'] = True
class MyCreateView(CreateView):
form_class = MyForm
model = MyModel
template_name = 'my_template.html'
success_url = '/success/'
def get_form(self, form_class=None):
form = super().get_form(form_class)
# 设置其他字段为只读
form.fields['other_field'].widget.attrs['readonly'] = True
return form
在上述示例中,我们创建了一个自定义的表单类MyForm,重写了其init方法,在该方法中将需要设为只读的字段的widget的readonly属性设置为True。然后,在MyCreateView中重写了get_form方法,获取表单实例后,再次设置其他字段的widget的readonly属性为True。
通过以上代码,我们可以在CreateView中将字段设为只读。请注意,这只是一种实现方式,具体根据实际需求进行调整。
推荐的腾讯云相关产品:腾讯云云服务器(CVM)和腾讯云数据库(TencentDB)。您可以通过以下链接了解更多关于腾讯云的产品信息:
领取专属 10元无门槛券
手把手带您无忧上云