2013-03-08 1 views
2

При создании/добавлении пользователя с администратором Django; как это можно настроить?добавление поля электронной почты для django при создании пользователей с администратором

Например, в настоящее время запрашиваются имя пользователя и пароль. Тем не менее, я хотел бы настроить это, чтобы иметь другие обязательные поля, такие как «электронная почта»?

Учебник django не совсем понятен в пользовательской настройке администратора пользователя?

ответ

0

Это, как вы можете настроить пользовательский администратор:

from django.contrib import admin 
from django.contrib.auth import admin as upstream 

# custom admin class for the User model, subclassing Django's one 
class UserAdmin(upstream.UserAdmin): 
    add_form_template = ... 
    add_form = ... 
    add_fieldsets = ... 

# unregister any existing admin for the User model and register mine 
try: 
    admin.site.unregister(User) 
except NotRegistered: 
    pass 
admin.site.register(User, UserAdmin) 

Части я оставил с ... являются настройками, которые необходимо сделать, чтобы изменить способ админ предлагающий для создания пользователя.

Ищите исходный код в django/contrib/auth/admin.py и изменяйте по вкусу.

+0

Tobia: спасибо, что указали мне в правильном направлении! – webcrew

2

пример добавления электронной почты для создания при создании пользователя. В проекте admin.py добавил следующее:

enter code here от Джанго импортных форм

from django.contrib import admin 
from django.contrib.auth import admin as upstream 
from django.contrib.auth.admin import UserAdmin 
from django.contrib.auth.forms import UserCreationForm, UserChangeForm 
from django.contrib.auth.models import Group, User 
from django.utils.translation import ugettext, ugettext_lazy as _ 


class UserAdmin(upstream.UserAdmin): 
    fieldsets = (
     (None, {'fields': ('username', 'password','email')}), 
     (_('Personal info'), {'fields': ('first_name', 'last_name')}), 
     (_('Permissions'), {'fields': ('is_active', 'is_staff', 'is_superuser', 
             'groups', 'user_permissions')}), 
     (_('Important dates'), {'fields': ('last_login', 'date_joined')}), 
    ) 
    add_fieldsets = (
     (None, { 
      'classes': ('wide',), 
      'fields': ('username', 'password1', 'password2', 'email')} 
     ), 
    ) 
    form = UserChangeForm 
    add_form = UserCreationForm 

try: 
    admin.site.unregister(User) 
except NotRegistered: 
    pass 

admin.site.register(User, UserAdmin) 
+0

Интересно. Атрибут 'add_fieldsets' документирован [здесь] (https://docs.djangoproject.com/en/1.5/topics/auth/customizing/), но не в [Ссылка ModelAdmin] (https: //docs.djangoproject. ком/о/1,5/иой/вно/администратор/# modeladmin-варианта). –

+0

Электронная почта по-прежнему не требуется после добавления «email» в add_fieldsets. Другие поля выделены жирным шрифтом (обязательно), но адрес электронной почты не выделен. См. Ответ monmon29 для правильного ответа. – kas

2

Место это в вашем models.py.

from django.contrib.auth.models import User 
User._meta.get_field('email').blank = False 

Затем запустить makemigrations. Затем выполните миграцию.

Выполнено!

Редактировать: Спасибо за поддержку!

+0

Это поле «email», которое требуется для меня на странице добавления админки, например, задан оригинальный вопрос. Это должен быть принятый ответ. – kas

+1

@kas, спасибо. Я просто делаю это просто. –