我有一个像 UserForm 这样的表单类
class UserForm(forms.ModelForm):
email=forms.EmailField(widget=forms.EmailInput(attrs={'class':'form-control','required': True}))
password=forms.CharField(widget=forms.PasswordInput(attrs={'class':'form-control','required': True}))
class Meta:
model=User
fields=['email','password']
和 2 视图 CreateView 和 UpdateView。
class UserCreate(CreateView):
template_name='admin/user_crud_form.html'
form_class=UserForm
def get_success_url(self):
return reverse('list_user')
class UserUpdate(UpdateView):
template_name='admin/user_crud_form.html'
form_class=UserForm
exclude = ('password',)
def get_success_url(self):
return reverse('list_user')
现在我只需要排除密码字段进行编辑。我每次只更改电子邮件。但不是 password** 。
但在创建用户时,我将同时使用两者。如何??此代码不排除更新视图中的密码字段。** 我不想使用 2 个表单来创建和更新 **
提前致谢
您正在使用模型表单。因此,您可以覆盖该方法__init__
。试试下面的代码
class UserForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(UserForm,self).__init__(*args, **kwargs)
attrs={'class':'form-control','required': True}
if self.instance and self.instance.pk:
self.fields.pop('password', None)
for field in self.fields.values():
field.widget.attrs = attrs
class Meta:
model=User
fields=['email','password']
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句