Omi*_*aee 3 python django django-models django-admin
因此,要使用电子邮件作为用户名,我会像这样重写内置User模型(受到Django 源代码的启发)
模型.py
class User(AbstractUser):
username = None
email = models.EmailField(unique=True)
objects = UserManager()
USERNAME_FIELD = "email"
REQUIRED_FIELDS = []
def __str__(self):
return self.email
Run Code Online (Sandbox Code Playgroud)
管理员.py
@admin.register(User)
class UserAdmin(admin.ModelAdmin):
fieldsets = (
(None, {"fields": ("email", "password")}),
(("Personal info"), {"fields": ("first_name", "last_name")}),
(
("Permissions"),
{
"fields": (
"is_active",
"is_staff",
"is_superuser",
"groups",
"user_permissions",
),
},
),
(("Important dates"), {"fields": ("last_login", "date_joined")}),
)
add_fieldsets = (
(
None,
{
"classes": ("wide",),
"fields": ("email", "password1", "password2"),
},
),
)
list_display = ("email", "is_active", "is_staff", "is_superuser")
list_filter = ("is_active", "is_staff", "is_superuser")
search_fields = ("email",)
ordering = ("email",)
filter_horizontal = ("groups", "user_permissions",)
Run Code Online (Sandbox Code Playgroud)
但这就是我进入管理站点更改用户时的样子:
密码可见且未经过哈希处理,并且没有更改密码表单的链接。
与默认 Django 项目相比:
密码不可见,有一个更改密码表单的链接
很明显我错过了一些东西,但我不知道它是什么。
Django Admin 外观问题可能与继承有关。更准确地说,将类更改为继承自UserAdmin.
from django.contrib.auth.admin import UserAdmin as DefaultUserAdmin
class UserAdmin(DefaultUserAdmin):
Run Code Online (Sandbox Code Playgroud)
这样做会使其看起来更接近默认的 Django 项目。
密码未加密的问题很可能是因为数据库中未加密。OP 有这个问题,这不是 Django 管理员的问题。
笔记:
AbstractUser当我想删除时我也会使用username。
由于当前的问题没有足够的信息来回答 pwd 被散列的问题,因此我将其留给OP的其他问题。
| 归档时间: |
|
| 查看次数: |
2479 次 |
| 最近记录: |