I always get the message "Please enter the correct email and password for a staff account. Note that both fields may be case-sensitive." I write in settings.py AUTH_USER_MODEL = 'eCommerce.User'. And after I run makemigrations and migrate command I use these commands: python manage.py createsuperuser and then python manage.py runserver. There is no errors in cmd but in the Django administration the above message shows.
from django.db import models
from django.contrib.auth.models import AbstractBaseUser, BaseUserManager
class UserManager(BaseUserManager):
def create_user(self,email,name,password=None):
if not email:
raise ValueError("Users must enter an email address.")
if not name:
raise ValueError("Users must enter a name.")
user = self.model(
email= self.normalize_email(email),
name= name,
#phone_number = phone_number,
)
user.set_password=password
user.save(using=self._db)
return user
def create_superuser(self,email,name,password=None):
user = self.create_user(
name= name,
email= self.normalize_email(email),
password= password
)
user.is_admin = True
user.is_active = True
user.is_staff = True
user.is_superuser = True
user.save(using= self._db)
return user
class Address(models.Model):
street = models.CharField(max_length=50)
city = models.CharField(max_length=20)
postal_code = models.CharField(max_length=10)
class User(AbstractBaseUser):
email = models.EmailField(verbose_name='email', max_length=50, unique=True)
name = models.CharField(max_length=30)
phone_number = models.CharField(max_length=20)
billing_address = models.ForeignKey(Address, on_delete=models.CASCADE, null=True
,related_name='billing_address')
shipping_address = models.ForeignKey(Address, on_delete=models.CASCADE, null=True,
related_name='shipping_address')
is_active = models.BooleanField(default=True)
is_admin = models.BooleanField(default=False)
is_staff = models.BooleanField(default=False)
is_superuser = models.BooleanField(default=False)
#is_superuser = models.BooleanField(default=False)
#is_staff = models.BooleanField(default=False)
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['name']
objects = UserManager()
def __str__(self):
return "Email: " + str(self.email) + "Name: " + str(self.name)
def has_perm(self, perm, obj=None):
return self.is_admin
def has_module_perms(self, app_label):
return True