0

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).

This is my 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:

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

MARK
  • 13
  • 1
  • 6
  • Does this post help? https://stackoverflow.com/questions/20425862/django-creating-a-superuser-with-a-custom-user-model – Lemon.py Dec 06 '20 at 01:23

1 Answers1

0

This solution helped me to solve the problem (but with a few changes).

I just needed to register my custom model in admin. 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',)}),
    )

MARK
  • 13
  • 1
  • 6