在UserUpdateForm上隐藏电子邮件地址

时间:2020-01-22 19:44:05

标签: python django python-3.x django-forms

我希望用户能够更新其用户名,而不是电子邮件地址。在示例3中,尽管我没有在代码中包含字段电子邮件,但是在运行网站时该字段仍然出现。诚然,该文本框为空白,而在示例1和2中则填充了该文本框。

如何停止显示电子邮件文本框?还是可以锁定它,以便用户无法输入新值?

示例1 enter image description here

class UserUpdateForm(forms.ModelForm):
    email = forms.EmailField()

    class Meta:
        model = User
        fields = ['username', 'email']

示例2 enter image description here

class UserUpdateForm(forms.ModelForm):
    email = forms.EmailField()

    class Meta:
        model = User
        fields = ['email']

示例3

enter image description here

class UserUpdateForm(forms.ModelForm):
    email = forms.EmailField()

    class Meta:
        model = User
        fields = ['username']

2 个答案:

答案 0 :(得分:2)

from django.forms import ModelForm

class UserUpdateForm(ModelForm):
    #email = forms.EmailField()

    class Meta:
        model = User
        fields = ['username']

答案 1 :(得分:0)

由于您需要除电子邮件以外的所有其他字段(或至少您仅提及电子邮件作为您要隐藏的字段),也许您可​​以使用然后排除属性:

from django.forms import ModelForm

class UserUpdateForm(ModelForm):

    class Meta:
        model = User
         exclude = ('email',)

有关更多详细信息,请阅读此doc

另外,替代方法是禁用字段(未选中):

class UserUpdateForm(forms.ModelForm):
    email = forms.EmailField(disabled=True)

    class Meta:
        model = User
        fields = ['username', 'email']

传递disabled=True仍应呈现该字段,但不能由用户对其进行版本编辑。