簡體   English   中英

django中的自定義用戶模型不允許在admin中設置密碼

[英]Custom user model in django does not allow setting password in admin

我創建了一個自定義用戶模型,我在我的應用程序中成功使用。

問題是在Admin中,在用戶編輯屏幕上,我得到了當前密碼哈希的顯示,而不是用於設置密碼的非常有用的界面。

我在Python 2.7上使用Django 1.5b1。

為了管理員用戶界面,我如何說服Django管理員以對待本機用戶的方式對待我的用戶模型?

文檔建議您需要使用admin注冊自定義模型,並且還要定義一些方法,以便管理界面使用自定義用戶模型。

您可能還需要為User定義內置表單。

來自自定義用戶和django.contrib.admin

您還需要向管理員注冊自定義用戶模型。 如果您的自定義用戶模型擴展了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>."))

借用https://stackoverflow.com/a/15630360/780262

至少在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM