Skip to content

Custom class AppUser breaks command ./manage.py createsuperuser, users cannot log into admin #6

Description

@paulrogov

Steps to reproduce:

./manage.py createsuperuser
email: joe@gmail.com
username: joe
password: abc321
password: abc321

When trying to log in:
Screenshot from 2024-06-27 12-43-23

Solution:

  1. Add two Boolean fields to the AppUser:
class AppUser(AbstractBaseUser, PermissionsMixin):
	user_id = models.AutoField(primary_key=True)
	email = models.EmailField(max_length=50, unique=True)
	username = models.CharField(max_length=50)

	is_staff = models.BooleanField(default=False)
	is_superuser = models.BooleanField(default=False)

	USERNAME_FIELD = 'email'
	
	objects = AppUserManager()

	def __str__(self) -> str:
		return self.username
  1. Fix create_superuser() method:
class AppUserManager(BaseUserManager):
	def create_superuser(self, email, password=None, **extra_fields):
		if not email:
			raise ValueError('An email is required')
		if not password:
			raise ValueError('A password is required')
		user = self.create_user(email, password)
		user.is_staff = True
		user.is_superuser = True
		user.save()
		return user

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions