Я пытаюсь использовать новую функциональность в 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?