Python Django Authentication Users and Authorization Custom User Manager

Now add a create_superuser method. All superusers have accepted the terms of service, so set the accepted_tos attribute

I appreciate any help getting this to work.

accounts/models.py
from django.contrib.auth.models import BaseUserManager
class UserManager(BaseUserManager):
    def create_user(self, email, dob, accepted_tos=False, password=None):
        if not password:
            raise ValueError("lskjdflkjsdflj")
        if not email:
            raise ValueError("slkjdflkjsdflkj")
        if accepted_tos != True:
            raise ValueError("lksjfdlkjasdf")
        user = self.model(
            email=self.normalize_email(email),
            dob=dob,
            accepted_tos=accepted_tos)
        user.set_password(password)
        user.save()
        return user

    def create_superuser(self, email, dob, password, accepted_tos=True):
        user = self.create_user(
            email,
            dob,
            password,
            accepted_tos)
        user.is_staff = True
        user.is_superuser = True
        user.save()
        return user

2 Answers

def create_superuser(self, email, dob, password):
        user = self.create_user(
            email,
            dob,
            password=password,
            accepted_tos=True)
        user.is_staff = True
        user.is_superuser = True
        user.save()
        return user

This code actually worked for me, i dont have much to say coz im really tired but for any hint or queries u can post

from django.contrib.auth.models import ( PermissionsMixin, BaseUserManager, AbstractBaseUser ) from django.db import models from django.utils import timezone

class UserManager(BaseUserManager): def create_user(self, email, dob, accepted_tos=None, password=None): if not accepted_tos: raise ValueError("Users must accept the terms of service")

    user = self.model(
        email=self.normalize_email(email),
        dob=dob,
        accepted_tos=True
    )
    user.set_password(password)
    user.save()
    return user

def create_superuser(self, email, dob, password):
    user = self.create_user(
        email,
        dob,
        accepted_tos=True,
        password=password
    )
    user.is_staff = True
    user.is_superuser = True
    user.save()
    return user