[英]Custom User model does not follow with the extended BaseUserManager implementation in django admin
[英]Custom user model in django does not allow setting password in admin
我創建了一個自定義用戶模型,我在我的應用程序中成功使用。
問題是在Admin中,在用戶編輯屏幕上,我得到了當前密碼哈希的顯示,而不是用於設置密碼的非常有用的界面。
我在Python 2.7上使用Django 1.5b1。
為了管理員用戶界面,我如何說服Django管理員以對待本機用戶的方式對待我的用戶模型?
文檔建議您需要使用admin注冊自定義模型,並且還要定義一些方法,以便管理界面使用自定義用戶模型。
您可能還需要為User定義內置表單。
您還需要向管理員注冊自定義用戶模型。 如果您的自定義用戶模型擴展了AbstractUser,則可以使用Django現有的UserAdmin類。 但是,如果您的用戶模型擴展了AbstractBaseUser,則需要定義自定義的ModelAdmin類。
只需將其添加到您的表單:
password = ReadOnlyPasswordHashField(
label= ("Password"),
help_text= ("Raw passwords are not stored, so there is no way to see "
"this user's password, but you can change the password "
"using <a href=\"password/\">this form</a>."))
至少在1.10,我能夠做到以下幾點。 比上面簡單。 我把它放在admin.py中:
from django.contrib.auth.admin import UserAdmin
from django.contrib import admin
from myapp.models import MyUser
class MyUserAdmin(UserAdmin):
model = MyUser
fieldsets = UserAdmin.fieldsets + (
(None, {'fields': ('a_custom_field',)}),
)
admin.site.register(MyUser, MyUserAdmin)
如果您要擴展AbstractBaseUser,則需要兩個表單,一個創建表單和一個沒有密碼的更新表單,這些表單來自ModelForm。
然后在Admin窗體中,指定單獨的創建和更新表單以及相應的字段集:
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表單而不是在admin中更改密碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.