在Django表单中隐藏字段表单

时间:2019-02-15 10:37:58

标签: django django-forms

我正在尝试在我的编辑个人资料表单中隐藏“密码”字段。即使我已经排除了它仍然出现的字段,这还是我的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 %}

当前制作的屏幕截图

enter image description here

为了澄清,我试图完全隐藏密码字段

2 个答案:

答案 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()

希望对您的问题有帮助