Django中的自定义用户模型不允许在管理员中设置密码。

2024-04-28 13:41:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经创建了一个自定义用户模型,我正在我的应用程序中成功地使用它。

问题是在管理员中,在用户编辑屏幕上,我得到了当前密码散列的显示,而不是用于设置密码的非常有用的界面。

我在Python 2.7上使用Django 1.5b1。

为了管理用户界面,我如何说服Django管理员像对待本地用户一样对待我的用户模型?


Tags: django用户模型应用程序编辑密码界面屏幕
3条回答

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

只需将此添加到表单中:

  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借来的

文档建议您需要向管理员注册自定义模型,还需要定义一些方法,以便管理员界面与自定义用户模型协同工作。

您可能还必须为用户定义内置表单。

来自Custom users and django.contrib.admin

您还需要向管理员注册自定义用户模型。如果自定义用户模型扩展了AbstractUser,则可以使用Django现有的UserAdmin类。但是,如果您的用户模型扩展了AbstractBaseUser,则需要定义一个自定义ModelAdmin类。

相关问题 更多 >