简体   繁体   English

Django 自定义超级用户无法在管理面板中创建新用户

[英]Django custom superuser can't create new user in admin panel

I created a custom user model and I can create new superuser with manage.py but when I login to admin panel, I can't add new user (although is_superuser column is true in database).我创建了一个自定义用户 model 并且可以使用 manage.py 创建新的超级用户,但是当我登录到管理面板时,我无法添加新用户(尽管is_superuser列在数据库中为 true)。

This is my models.py:这是我的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']

I also tried with custom UserManager but still not working:我也尝试使用自定义 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()

Here is my admin panel screenshot: screenshot这是我的管理面板截图: screenshot

This solution helped me to solve the problem (but with a few changes).这个解决方案帮助我解决了这个问题(但有一些变化)。

I just needed to register my custom model in admin.我只需要在管理员中注册我的自定义 model。 Here is what I did:这是我所做的:

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',)}),
    )

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM