首页 > 解决方案 > Django admin:创建的用户有纯文本密码,无法登录

问题描述

我想为员工用户提供一个自定义选项卡,所以admin.py我这样做:

class StaffUser(User):
    class Meta:
        proxy = True


@admin.register(StaffUser)
class AdminUserAdmin(admin.ModelAdmin):
    pass

但是在管理站点上,每当我使用此界面添加新用户时,我都无法使用它登录,因为由于某种原因它将密码设置为纯文本而不是散列。

我已经阅读了这篇文章但是如果我这样做并StaffUserAdminUser我得到这个其他错误中更改为继承

AttributeError: type object 'StaffUser' has no attribute '_meta'

标签: djangodjango-admin

解决方案


您应该在models.py(或models package)中声明您的模型,而不是admin.py.

UserAdminAdminUser(在 Django 包中没有 an 这样的东西)是 的子类ModelAdmin,即在 Django admin 中注册模型的类。它不是您可以扩展以制作新模型的模型子类。

此外,如果您尝试扩展User只是为了区分有权访问 Django 管理站点的用户,请注意默认模型中已经存在一个is_staff属性。User无论如何,如果您仍想扩展User模型,则应按照文档中的说明AbstractUser进行扩展。


推荐阅读