アプリ内で正常に使用しているカスタム ユーザー モデルを作成しました。
問題は、Admin 内のユーザー編集画面で、パスワードを設定するための非常に便利なインターフェイスではなく、現在のパスワード ハッシュが表示されることです。
Python 2.7 で Django 1.5b1 を使用しています。
管理者ユーザー インターフェイスのために、Django 管理者がネイティブ ユーザーと同じようにユーザー モデルを処理するように説得するにはどうすればよいですか?
アプリ内で正常に使用しているカスタム ユーザー モデルを作成しました。
問題は、Admin 内のユーザー編集画面で、パスワードを設定するための非常に便利なインターフェイスではなく、現在のパスワード ハッシュが表示されることです。
Python 2.7 で Django 1.5b1 を使用しています。
管理者ユーザー インターフェイスのために、Django 管理者がネイティブ ユーザーと同じようにユーザー モデルを処理するように説得するにはどうすればよいですか?
ドキュメントでは、カスタム モデルを管理者に登録し、いくつかのメソッドも定義して、管理者インターフェイスがカスタム ユーザー モデルで動作するようにする必要があることを示唆しています。
User の組み込みフォームを定義する必要がある場合もあります。
カスタムユーザーと django.contrib.adminから
You will also need to register your custom User model with the admin. If your custom User model extends AbstractUser, you can use Django's existing UserAdmin class. However, if your User model extends AbstractBaseUser, you'll need to define a custom ModelAdmin class.
AbstractBaseUser を拡張する場合は、ModelForm から派生した、作成フォームと、パスワードなしの更新フォームの 2 つのフォームが必要になります。
次に、管理フォームで、個別の作成フォームと更新フォームを、対応するフィールドセットとともに指定します。
class MyUserAdmin(UserAdmin):
# The forms to add and change user instances
form = UserChangeForm
add_form = UserCreationForm
fieldsets = (
(None, {'fields': ('email', 'first_name', 'last_name')}),
)
add_fieldsets = (
(None, {'fields': ('email', 'password', 'password2', 'first_name', 'last_name')}),
)
新しいユーザーのパスワードは機能します。管理者ではなく、定義済みの django フォームでパスワードの変更を行います。