自定义用户管理问题

问题描述 投票:0回答:2

我正在创建自定义用户模型,但无法在管理员中获取用户表 models.py:

class EmailUserManager(BaseUserManager):
    
    def create_user(self, email, password=None, **extra_fields):
        if not email:
            raise ValueError('Email required')
        email = self.normalize_email(email)
        user = self.model(email=email, **extra_fields)
        user.set_password(password)
        user.save(using=self._db)
        return user
    
    def create_superuser(self, email, password=None, **extra_fields):
        extra_fields.setdefault('is_staff', True)
        extra_fields.setdefault('is_superuser', True)
        
        return self.create_user(email, password, **extra_fields)
    
class EmailUser(AbstractBaseUser, PermissionsMixin):
    email = models.EmailField(unique=True)
    is_active = models.BooleanField(default=True)
    is_staff = models.BooleanField(default=False)

    objects = EmailUserManager()

    USERNAME_FIELD = 'email'

    groups = models.ManyToManyField(Group, related_name="customuser_set")
    user_permissions = models.ManyToManyField(Permission, related_name="customuser_set")

设置.py:

AUTH_USER_MODEL = 'jwt_auth.EmailUser'

admin.py:

from django.contrib import admin
from django.contrib.auth import get_user_model
User = get_user_model()
admin.register(User)

我已经运行迁移,实际上我可以创建超级用户并登录到我的管理员。我在互联网上没有找到任何解决方案。如果有人知道如何修复管理员请帮忙。

django django-models django-users django-auth-models
2个回答
0
投票

这个问题很容易解决,它表明你应该更准确地阅读文档:

您使用

admin.register(User)
,现在它是 decorator,您可以将其应用于任何管理类,如下所示:

admin.register(User)(admin.ModelAdmin)

我知道这还不清楚,这就是为什么你可以写更多标准:

@admin.register(User)
class MyAdmin(admin.ModelAdmin):
    pass

但在正常项目中只需使用这个:

admin.site.register(User)

更多这里:

关于现场注册modeladmin:

关于admin.register装饰器: https://docs.djangoproject.com/en/5.0/ref/contrib/admin/#the-register-decorator


0
投票

您尚未在管理员中正确注册您的模型。你做了

admin.register(User)
但它应该是:

admin.site.register(User)

或者你可以使用寄存器装饰器:

from django.contrib import admin
from .models import User


@admin.register(User)
class UserAdmin(admin.ModelAdmin):
    pass

您可以随意定制它以满足您的需求。请参阅文档

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.