UserManager.create_superuser() missing 1 required positional argument: 'username'

21 Views Asked by At

Here is my accounts apps code:

#models.py

from django.db import models 
from django.contrib.auth.models import AbstractUser

class CustomUser(AbstractUser):
    username = None
    phone_number = models.CharField(max_length=100, unique=True)
    
    USERNAME_FIELD = 'phone_number'
    REQUIRED_FIELDS = []

#manager.py

from django.contrib.auth.base_user import BaseUserManager

class UserManager(BaseUserManager): 
    def create_user(self, phone_number, password = None, **extra_fields): 
        if not phone_number: raise ValueError("Phone number is required")
            user = self.model(phone_number = phone_number, **extra_fields)

        user.set_password(password)
        user.save(using = self.db)
        return user

    def create_superuser(self, phone_number, password = None, **extra_fields):
        extra_fields.setdefault('is_staff', True)
        extra_fields.setdefault('is_superuser', True)
        extra_fields.setdefault('is_active', True)

        return self.create_user(phone_number, password, **extra_fields)

#settings.py .... AUTH_USER_MODEL = 'accounts.CustomUser' ....

It should be created superuser but shows the error.

0

There are 0 best solutions below