我正在尝试在我的编辑个人资料表单中隐藏“密码”字段。即使我已经排除了它仍然出现的字段,这还是我的forms.py文件:
class EditProfileForm(UserChangeForm):
class Meta:
model = User
fields = (
'email',
'first_name',
'last_name'
)
exclude = (
'password',
)
这是我的html:
{% block body %}
<div class="container">
<form method="POST">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Submit</button>
</form>
</div>
{% endblock %}
当前制作的屏幕截图
为了澄清,我试图完全隐藏密码字段
答案 0 :(得分:1)
似乎您是从UserChangeForm继承的。不幸的是,您的Meta
仅影响Django从模型创建的字段,而不影响在那里手动定义的字段(这与DRF序列化器的行为有所不同)。
对于您的情况,您需要做的只是:
class EditProfileForm(UserChangeForm):
password = None
class Meta:
model = User
fields = (
'email',
'first_name',
'last_name'
)
或者从一开始就创建自己的UserChangeForm
。
答案 1 :(得分:1)
您可以尝试
class EditProfileForm(UserChangeForm):
class Meta:
model = User
fields = (
'email',
'first_name',
'last_name'
)
def __init__(self, *args, **kwargs):
forms.ModelForm.__init__(self, *args, **kwargs)
self.fields['password'].widget = forms.HiddenInput()
希望对您的问题有帮助