Добавление дополнительной проверки в админ-формы django - PullRequest
10 голосов
/ 18 июля 2011

Если нам нужно добавить дополнительную проверку в форме добавления пользователя администратора django, например сделать имя, фамилию и адрес электронной почты обязательными. Как это можно сделать ??

Ответы [ 3 ]

8 голосов
/ 18 июля 2011

Вы должны создать собственную форму пользователя и добавить необходимые поля:

class UserForm(forms.ModelForm):
    class Meta:
        model = User

    def __init__(self, *args, **kwargs):
        super(UserForm, self).__init__(*args, **kwargs)
        self.fields['email'].required = True
        self.fields['first_name'].required = True
        self.fields['last_name'].required = True

Затем переопределите форму в вашем ModelAdmin:

class UserAdmin(admin.ModelAdmin):
    form = UserForm

А затем отмените регистрацию обычного администратора перед тем, как зарегистрировать своего собственного:

admin.site.unregister(User)
admin.site.register(User, UserAdmin)
6 голосов
/ 28 ноября 2011

Это расширяет ответ Джеффруа:

from django.contrib.auth.forms import UserCreationForm
class UserForm(UserCreationForm):
    class Meta:
        model = User

    def __init__(self, *args, **kwargs):
        super(UserForm, self).__init__(*args, **kwargs)
        self.fields['email'].required = True
        self.fields['first_name'].required = True
        self.fields['last_name'].required = True

ModelAdmin:

from django.contrib.auth.admin import UserAdmin
class CustomUserAdmin(UserAdmin):
    add_form = UserForm
    add_fieldsets = (
      (None, {'fields':('username','password1','password2','first_name','last_name','email'),}),)

А затем отмените регистрацию, как указано выше:

admin.site.unregister(User)
admin.site.register(User, CustomUserAdmin)
0 голосов
/ 18 июля 2011

Просто напишите свой собственный класс формы и сообщите ModelAdmin , чтобы использовать его в качестве формы.

...