from django.db import models from django.contrib.auth.models import AbstractUser, BaseUserManager class CustomUserManager(BaseUserManager): """Custome user manager.""" def create_user(self, email, username, password=None, **extra_kwargs): """Create and saves a User with the given email, username, and password.""" if not email: raise ValueError("Users must have an email address") user = self.model(email=self.normalize_email(email), username=username) user.set_password(password) user.save(using=self._db) return user def create_superuser(self, email, username, password=None, **extra_kwargs): """Create and saves a superuser with the given email, username, and password.""" user = self.create_user(email, username, password=password) user.is_staff = True user.is_superuser = True user.save(using=self._db) return user class User(AbstractUser): id = models.AutoField(primary_key=True) email = models.EmailField(max_length=150, unique=True) username = models.CharField(max_length=150, unique=True) USERNAME_FIELD = 'email' REQUIRED_FIELDS = ['username'] objects = CustomUserManager()