Aks*_*sin 2 django django-forms django-views
我已经创建了一个继承UpdateView的类视图.我已经指定了应该从中构建表单的字段和模型.现在说如果我有一个现场电子邮件,那么我想在表单中禁用它.我没有关于如何做到这一点的线索.
class UserUpdate(UpdateView):
model = Users
fields = ['email', 'first_name', 'last_name', 'birth_date']
template_name = 'users_update_form.html'
success_url = '/index/'
Run Code Online (Sandbox Code Playgroud)
要隐藏它:
class UserUpdate(UpdateView):
model = Users
fields = ['first_name', 'last_name', 'birth_date']
template_name = 'users_update_form.html'
Run Code Online (Sandbox Code Playgroud)
在这种情况下,不需要创建一个单独的Form类 - 因为这是由处理UpdateView.
为了使场地只读:
class UserForm(forms.ModelForm):
class Meta:
model = Users
fields = ['email', 'first_name', 'last_name', 'birth_date']
email = forms.CharField(widget=forms.TextInput(attrs={'readonly':'readonly'}))
def clean_email(self):
return self.initial['email']
class UserUpdate(UpdateView):
model = Users
form_class = UserForm
Run Code Online (Sandbox Code Playgroud)
Django 1.9内置了禁用选项.使用此选项可以跳过其他clean方法.
class UserForm(forms.ModelForm):
class Meta:
model = Users
fields = ['email', 'first_name', 'last_name', 'birth_date']
email = forms.CharField(disabled=True)
Run Code Online (Sandbox Code Playgroud)