我正在创建自定义用户模型,但无法在管理员中获取用户表 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)
我已经运行迁移,实际上我可以创建超级用户并登录到我的管理员。我在互联网上没有找到任何解决方案。如果有人知道如何修复管理员请帮忙。
这个问题很容易解决,它表明你应该更准确地阅读文档:
您使用
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
您尚未在管理员中正确注册您的模型。你做了
admin.register(User)
但它应该是:
admin.site.register(User)
或者你可以使用寄存器装饰器:
from django.contrib import admin
from .models import User
@admin.register(User)
class UserAdmin(admin.ModelAdmin):
pass
您可以随意定制它以满足您的需求。请参阅文档。