2011-11-08 9 views
2

私はDjangoでユーザーadminを変更しようとしています。私のプロジェクトでは、電子メールアドレス、名と姓が必要です。ユーザーの管理者を次のように変更しました:djangoでのユーザー管理フォームの拡張

パスワードを保存すると、問題はハッシュなしで表示されます。私は問題は、私は私の新しいフォームでパスワードフィールドをハッシュする必要があると思います。しかし、古いフォームはそれを行うので、古いフォームを拡張できる方法はありますか?

答えて

5

UserChangeFormのサブクラスをdjango.contrib.auth.formsにサブクラス化し、サブタイプをforms.ModelFormではなく、その動作をカスタマイズすることができます。

from django.contrib.auth.forms import UserChangeForm 

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

class UserAdmin(admin.ModelAdmin): 
    form = MyUserChangeForm 

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

上記では、パスワードハッシュを表示し、パスワード変更フォームにリンクするユーザーパスワードのデフォルトの動作を使用します。それを変更したい場合は、SetPasswordFormを見て、Djangoの管理者にパスワードがどのように設定されているかを見てください。

関連する問題