【问题标题】:Django custom superuser can't create new user in admin panelDjango 自定义超级用户无法在管理面板中创建新用户
【发布时间】:2021-03-17 13:07:36
【问题描述】:

我创建了一个自定义用户模型,我可以使用 manage.py 创建新的超级用户,但是当我登录到管理面板时,我无法添加新用户(尽管 is_superuser 列在数据库中为 true)。

这是我的models.py:

class MyUser(AbstractUser):
    email = models.EmailField(unique=True)
    department = models.ForeignKey(to=Department, on_delete=models.CASCADE, null=True)
    
    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = ['username', 'password']

我也尝试了自定义 UserManager 但仍然无法正常工作:

class MyUserManager(UserManager):
    def create_superuser(self, username, email=None, password=None, **extra_fields):
        extra_fields.setdefault('is_staff', True)
        extra_fields.setdefault('is_superuser', True)
        u = self._create_user(username, email, password, **extra_fields)
        u.save()
        return u

class MyUser(AbstractUser):
    email = models.EmailField(unique=True)
    department = models.ForeignKey(to=Department, on_delete=models.CASCADE, null=True)
    
    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = ['username', 'password']

    objects = MyUserManager()

这是我的管理面板截图: screenshot

【问题讨论】:

标签: python django


【解决方案1】:

This solution 帮助我解决了问题(但做了一些更改)。

我只需要在管理员中注册我的自定义模型。这是我所做的:

from .models import MyUser, Department
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin


@admin.register(MyUser)
class MyUserAdmin(UserAdmin):
    fieldsets = UserAdmin.fieldsets + (
        ('Departmet', {'fields': ('department',)}),
    )

【讨论】:

    猜你喜欢
    • 2021-10-01
    • 1970-01-01
    • 2018-11-04
    • 1970-01-01
    • 2013-04-05
    • 1970-01-01
    • 2020-07-13
    • 2021-09-07
    • 2021-12-09
    相关资源
    最近更新 更多