Управление свойствами и полями UserCreationForm - PullRequest
7 голосов
/ 24 декабря 2011

Я новичок в Джанго, и даже после тщательной попытки найти ответ на этот вопрос, я не смог найти ни одного.= /

Я использую UserCretionForm для создания своих пользователей, и я хотел знать несколько вещей:

1 - Как я могу управлять свойствами этой формы?(например, я не хочу показывать подсказки типа «Требуется. 30 символов ...» или «Введите тот же пароль, что и выше, для проверки».)

2 - я хочу, чтобы он показывал другиенастраиваемые поля.Как мне это сделать?(пожалуйста, попробуйте уточнить, где я должен написать коды, которые вы мне покажете, так как я не эксперт = D).(Например, здесь, в Бразилии, у нас есть некоторая национальная информация, которую мне нужно хранить. Вот почему мне нужны эти поля.)

Заранее спасибо!(У)

1 Ответ

10 голосов
/ 24 декабря 2011

Изменение сообщений валидатора по умолчанию

Вы можете изменить сообщения об ошибках валидаторов по умолчанию с помощью аргумента error_messages на поле формы.

Чтобы узнать, какие валидаторы существуют для каждого поля, проверьте здесь: https://docs.djangoproject.com/en/dev/ref/forms/fields/#built-in-field-classes

class MyForm(UserCreationForm):
    def __init__(self, *args, **kwargs):
        super(MyForm, self).__init__(*args, **kwargs)
        self.fields['username'].error_messages = {'invalid': 'foobar'}
        self.fields['password1'].error_messages = {'required': 'required, man'}

Добавление новых полей в существующую форму

Если вы хотите добавить новые поля, вы бы добавили их через подкласс (это просто python).

Если вы создадите подкласс UserCreationForm и добавите в него поле, вы получите новый класс формы, который просто содержит поля оригинала и вашновые.

class MyForm(UserCreationForm):
    extra_field = forms.CharField()

Переопределение формы администратора

Если вы пытаетесь переопределить UserCreationForm, который по умолчанию используется сайтом администратора, вам придется зарегистрировать новый ModelAdmin для User модера.

from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User

from foo import MyNewUserCreationForm

class NewUserAdmin(UserAdmin):
    add_form = MyNewUserCreationForm

admin.site.unregister(User)
admin.site.register(User, NewUserAdmin)
...