我继承了用户类来进行自定义身份验证。我没有通过这种方式获得密码散列。它只是以纯文本形式存储在 MySQL 数据库中。我已通过管理面板创建了员工,但无法以员工身份登录。此外,我还使用 DRF 和 Djoser 创建了 auth API 端点,但无法使用通过 Django 管理面板创建的用户配置文件登录。
这是我的代码。
from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
pass
from .models import User
class UserAdmin(admin.ModelAdmin):
pass
admin.site.register(User, UserAdmin)
我在 Stack Overflow 中看到了旧的回复,建议将父类更改为
django.contrib.auth.admin.UserAdmin
。当我尝试此操作时,添加用户模板表单只有 3 个字段。用户名、密码和密码确认。
from django.contrib.auth.admin import UserAdmin as DefaultUserAdmin
from .models import User
class UserAdmin(DefaultUserAdmin):
pass
admin.site.register(User, UserAdmin)
我该如何解决这个问题。
我也写了一个自定义的 UserAdmin,所以我想我可以帮助你一点
试试这个:
@admin.register(User)
class UserAdmin(UserAdmin):
"""Define admin model for custom User model with no email field."""
fieldsets = (
(None, {'fields': ('email', 'password')}),
(_('Personal info'), {'fields': ('first_name', 'last_name')}),
(_('Permissions'), {'fields': ('is_active', 'is_staff', 'is_superuser')}),
)
add_fieldsets = (
(None, {
'classes': ('wide',),
'fields': ('email', 'password1', 'password2'),
}),
)
list_display = ('email', 'is_staff')
search_fields = ('email',)
ordering = ('email',)
我还认为你的 models.py 存在问题,因为你没有 userManager
UserManager 在创建用户时使用,所以我猜这有问题
@Zesshi 谢谢。你的解决方案对我有用。但我想知道在这种情况下真正导致问题的原因是什么。