class UserManager(BaseUserManager.from_queryset(UserQuerySet)): use_in_migrations = True @transaction.atomic def _create_user(self, email, password, display_name=None, is_active=True, **extra_fields): """ Creates and saves a user with the given username, email and password. """ email = self._validate_email(email) extra_fields['unverified_email'] = email user = self.model(email=email, is_active=is_active, display_name=display_name, **extra_fields) user.set_password(password) user.save() user.send_welcome_email() return user def _validate_email(self, email): if email is None: raise ValueError('The email field must be set') return self.normalize_email(email) def create_user(self, email=None, password=None, display_name=None, **extra_fields): return self._create_user(email, password, display_name, **extra_fields) def create_superuser(self, email, password, **extra_fields): user = self._create_user(email, password, email, **extra_fields) user.is_superuser = True user.is_staff = True user.save() return user def get_by_natural_key(self, email): """ As we don't allow sign-ups with similarly cased email addresses, we can allow users to login with case spelling mistakes """ return self.get(email__iexact=email)
class UserManager(BaseUserManager.from_queryset(UserQuerySet)): pass