起きたこと
なにが起きたかというと、
- AbstractUserモデルを継承してカスタムUserモデルを作成。
- adminにadmin.register.site(CustomUser)のように普通に登録
- admin管理画面から新しくUserを登録!
- 何故かパスワードが生で表示される。
- ログインできない!!!
という問題が発生しました。。
結論から申しますと2の操作が原因です。
ちなみにUserのカスタマイズについては以下の記事に詳しくあります。
okoppe8さんの記事
解決方法
UserAdminをadmin.site.register()の第2引数に登録してあげる。
admin.py
from django.contrib import admin
from . models import CustomUser
from django.contrib.auth.admin import UserAdmin
)
admin.site.register(CustomUser, UserAdmin)
元のコード
管理画面をカスタマイズするためにUserAdminを自作してしまい、CustomUserモデルのadminとして登録してしまっていました。
これだと、パスワードが上手くハッシュされずに登録され、認証時にエラーとなってしまいます。
admin.py
from django.contrib import admin
from . models import CustomUser
class UserAdmin(admin.ModelAdmin):
list_display = ('username', 'id', )
admin.site.register(CustomUser, UserAdmin)
参考
Stuck Overflow
Created User from django custom admin page can't login