django - Django admin:创建的用户有纯文本密码,无法登录
问题描述
我想为员工用户提供一个自定义选项卡,所以admin.py
我这样做:
class StaffUser(User):
class Meta:
proxy = True
@admin.register(StaffUser)
class AdminUserAdmin(admin.ModelAdmin):
pass
但是在管理站点上,每当我使用此界面添加新用户时,我都无法使用它登录,因为由于某种原因它将密码设置为纯文本而不是散列。
我已经阅读了这篇文章但是如果我这样做并StaffUser
从AdminUser
我得到这个其他错误中更改为继承
AttributeError: type object 'StaffUser' has no attribute '_meta'
解决方案
您应该在models.py
(或models
package)中声明您的模型,而不是admin.py
.
UserAdmin
AdminUser
(在 Django 包中没有 an 这样的东西)是 的子类ModelAdmin
,即在 Django admin 中注册模型的类。它不是您可以扩展以制作新模型的模型子类。
此外,如果您尝试扩展User
只是为了区分有权访问 Django 管理站点的用户,请注意默认模型中已经存在一个is_staff
属性。User
无论如何,如果您仍想扩展User
模型,则应按照文档中的说明AbstractUser
进行扩展。
推荐阅读
- angular - 如何在 Angular 的 observable 中返回可选值?
- c - while 中的动态内存分配
- android - IntelliJ IDEA 数据库插件中缺少“Android SQLite”项目
- c# - 使用 XMLSerializer 将对象序列化为 SOAP 编码的 XML 流
- jquery - 单击按钮转到下一步我想能够获取表格每一行的单元格1和单元格2的文本值并将它们都存储在json列表对象中
- html - 如何使需要的元素(在 html 中)不需要出现(在 css 中)
- php - 更新 Laravel 作曲家后空白页来了
- go - 如何从此请求中获取 POST 值?
- c# - 如何针对不同类型的碰撞执行 CollisionCheck()?
- c# - 当程序集在不同的文件夹中时,“组件没有由 URI 标识的资源”