2013-04-15 2 views
2

Я пытаюсь использовать новую функциональность в Django 1.5, чтобы использовать адрес электронной почты в качестве имени пользователя.Имя пользователя по-прежнему требуется в пользовательской модели

Все работает отлично, бар сайт администратора для обновления пользователей, которые я должен был возиться с, чтобы пароли не появляются сырые (и использовать пароль формы изменения и т.д.), используя этот код: -

class PlayerChangeForm(UserChangeForm): 
    class Meta(UserChangeForm.Meta): 
     model = Player 

class PlayerCreationForm(UserCreationForm): 
    class Meta(UserCreationForm.Meta): 
     model = Player 

class PlayerAdmin(auth.admin.UserAdmin): 
    form = PlayerChangeForm 
    add_form = PlayerCreationForm 

    ordering = ['first_name', 'last_name'] 
    list_display = ('primkey', 'email', 'mobile') 
    list_editable = ('email', 'mobile') 

    list_filter =() 
    fieldsets = ((None, {'fields': ('username', 'first_name', 'last_name', 'email', 'password', 'mobile')}), 
    ('Permissions', {'fields': ('is_active', 'is_admin')}), 
    ('Important dates', {'fields': ('last_login',)}), 
    ) 

    add_fieldsets = ((None, { 
    'classes': ('wide',), 
    'fields': ('username', 'first_name', 'last_name', 'email', 'password1', 'password2')} 
), 
    ) 
    filter_horizontal =() 

    def primkey(self, obj): 
     return ("%s" % (obj.get_full_name())) 
    primkey.short_description = 'Player' 

Это делает страницу администратора хорошо выглядящей, но когда я на самом деле пытаюсь обновить Player, она сообщает мне, что есть ошибка в форме, но не указывает, где.

После небольшого беспорядка выясняется, что он хочет установить поле имени пользователя (если я добавлю это в форму администратора, он говорит, что это поле обязательно), но, конечно, это не так, как я установили, что мой USERNAME_FIELD является «электронной почтой»?

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

Любые идеи об этом или это ошибка в Django?

ответ

0

В Django Documentation говорится, что формы должны быть переписаны:

  • UserCreationForm

Зависит от модели пользователя. Должна быть переписана для любой пользовательской модели.

  • UserChangeForm

Зависит от модели пользователя. Должна быть переписана для любой пользовательской модели.

Существует родственный билет: https://code.djangoproject.com/ticket/19353 но код все еще ожидает username поля присутствовать.

Смежные вопросы