Удаление help_text из Django UserCreateForm

Наверное, плохой вопрос, но яиспользую Django 's UserCreationForm (слегка измененный, чтобы включать электронную почту), и я хотел бы удалить текст help_text, который Django автоматически отображает на странице HTML.

В разделе «Регистрация» моей HTML-страницы есть имя пользователя, адрес электронной почты, пароль1 и Пароль 2 поля. Но под именем пользователя "Необходимые. 30 символов или меньше. Буквы, цифры и @ ... только. " А в разделе «Подтверждение пароля» («Пароль 2») написано:Введите для проверки тот же пароль, что и выше. "

Как мне удалить это?

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

    def save(self, commit=True):
        user = super(UserCreateForm, self).save(commit=False)
        user.email = self.cleaned_data['email']
        if commit:
            user.save()
        return user

    class Meta:
        model = User
        fields = ("username", "email", "password1", "password2")
        exclude = ('username.help_text')

#views.py
def index(request):
    r = Movie.objects.all().order_by('-pub_date')
    form = UserCreateForm()
    return render_to_response('qanda/index.html', {'latest_movie_list': r, 'form':form},     context_instance = RequestContext(request))

#index.html
{% csrf_token %}
     Create an account 
    {{ form.as_p }}
    
    

Ответы на вопрос(3)

Решение Вопроса

Вы можете установитьhelp_text полей нет в__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()

выход:

<label for="id_username">Username:</label><input id="id_username" type="text" name="username" maxlength="30">
<label for="id_password1">Password:</label><input type="password" name="password1" id="id_password1">
<label for="id_password2">Password confirmation:</label><input type="password" name="password2" id="id_password2">
<label for="id_email">Email:</label><input type="text" name="email" id="id_email">

Если вы делаете слишком много изменений, в таких случаях лучше просто переопределить поля, например

class UserCreateForm(UserCreationForm):
    password2 = forms.CharField(label=_("Whatever"), widget=MyPasswordInput 

но в вашем случае мое решение будет работать очень хорошо.

 Andres Urrego Angel04 мая 2018 г., 19:09
Все еще полезно! в 2018 году
 Chris Yin02 нояб. 2012 г., 22:32
классно. Спасибо за помощь!

более чистый вариант - использовать словарь help_texts в классе Meta. Пример:

class UserCreateForm(UserCreationForm):
    ...
    class Meta:
        model = User
        fields = ("username", "email", "password1", "password2")
        help_texts = {
            'username': None,
            'email': None,
        }

Больше информации здесь:https://docs.djangoproject.com/en/1.11/topics/forms/modelforms/#overriding-the-default-fields

Идеально подходит для имени пользователя и электронной почты, но нене работает для пароля2. Понятия не имею почему.

 texnic25 окт. 2017 г., 01:33
Работал для меня на ForeignKey. Спасибо!
 Henrik Heimbuerger09 нояб. 2018 г., 13:12
Я согласен, что в документах говорится, что это должно работать, но это также не имеет никакого значения для меня, даже дляusername а такжеpassword1, Если у кого-то есть больше информации о том, чтоНеобходимо применить эту опцию, я был бы признателен, если бы вы могли поделиться. Я отлаживал это некоторое время, но когда я рендерил эту форму, Django недаже близко не дотронуться доhelp_texts поля.

бразом.

<style>

.helptext{
  visibility: hidden;
}

</style>

 freezed24 сент. 2018 г., 18:41
Вопрос был оудаление в HTML, то CSS не делают работу.

Ваш ответ на вопрос