Как отключить регистрационный пароль в django help_text - PullRequest
0 голосов
/ 05 июня 2019

Я новичок в Django, у меня есть страница регистрации в Django для новых пользователей, мне и мне нужно отключить пароль, имя пользователя и help_text. Я прочитал несколько похожих вопросов об отключении help_texts, но, похоже, никто не отключил парольhelp_texts.

Вот мой код:

class CustomUserCreation(UserCreationForm):
    email = forms.EmailField()
    class Meta:
        model = User
        fields = ['username','email','password1','password2',]
        help_texts = {
            'email' : None,
            'username' : None,
            'password1' : None,
            'password2' : None,

        }

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

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

class UpdateProfile(forms.ModelForm):
    profile_picture = forms.ImageField()
    class Meta:
        model = Profile
        fields = ['profile_picture',]

и мой init

from django.contrib.auth.forms import UserCreationForm
from django import forms

class UserCreateForm(UserCreationForm):
    email = forms.EmailField(required=True)

    def __init__(self, *args, **kwargs):
        super(UserCreateForm, self).__init__(*args, **kwargs)

        for fieldname in ['username', 'password1', 'password2']:
            self.fields[fieldname].help_text = None

print UserCreateForm()

1 Ответ

0 голосов
/ 05 июня 2019

Я сейчас перепишу твои классы ,,,

1)

class CustomUserCreation(UserCreationForm):
    ''' avoid help_text with email, username, password1, password2 (As you want)'''
    email = forms.EmailField()

    class Meta:
        model = User
        fields = (
            'username',
            'email',
            'password1',
            'password2'
        )

    def __init__(self, *args, **kwargs):
        super(CustomUserCreation, self).__init__(*args, **kwargs)
        for field_name in ('username', 'email', 'password1', 'password2'):
            self.fields[field_name].help_text = ''

2)

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

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

class UpdateProfile(forms.ModelForm):
    profile_picture = forms.ImageField()
    class Meta:
        model = Profile
        fields = ['profile_picture',]

3)

class UserCreateForm(UserCreationForm):
    email = forms.EmailField(required=True)

    def __init__(self, *args, **kwargs):
        super(UserCreateForm, self).__init__(*args, **kwargs)

        for field_name in ('email', 'username', 'password1', 'password2'):
            self.fields[field_name].help_text = ''
Атрибут

help_texts в class Meta отвечает за override help_text для полей, которые генерируются из Model (при использовании ModelForm). В вашем случае используйте переопределение __init__ и читайте поля напрямую (все поля, независимо от того, сгенерировано ли оно из Model или являются просто атрибутом Form, заполняются в self.fields атрибуте экземпляра, который представляет OrderedDict), а затем переопределяют help_text для каждого поля действительно хорошая идея.

Надеюсь, это вам поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...