Скрытие адреса электронной почты в UserUpdateForm - PullRequest
0 голосов
/ 22 января 2020

Я хочу, чтобы пользователь мог обновить свое имя пользователя, но не адрес электронной почты. В примере 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 ]

2 голосов
/ 22 января 2020
from django.forms import ModelForm

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

    class Meta:
        model = User
        fields = ['username']
0 голосов
/ 22 января 2020

Поскольку вам нужны все остальные поля, кроме электронной почты (или, по крайней мере, вы упомянули только электронную почту как ту, которую хотите скрыть), возможно, вы можете использовать атрибут exclude:

from django.forms import ModelForm

class UserUpdateForm(ModelForm):

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

Для получения более подробной информации Вы можете прочитать в этом do c.

Кроме того, альтернативный способ go - отключить поле (не отмечено):

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

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

Passing disabled=True должен по-прежнему отображать поле, но не может редактировать его пользователем.

...