Python Django Authentication Users and Authorization Custom User Manager

Ronald Williams
Ronald Williams
Java Web Development Techdegree Graduate 25,018 Points

create superuser what is wrong?

I keep getting "Bummer: Try again!" Anyone have any ideas?

from django.contrib.auth.models import BaseUserManager

class UserManager(BaseUserManager):
    def create_user(self, email, dob, accepted_tos=None, password=None):
        if not accepted_tos:
            raise ValueError("Must accept the Terms of Service.")

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

        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
        )

        user.is_staff = True
        user.is_superuser = True
        user.save()
        return user

1 Answer

This has to do with your positional parameters, the code below should work. and here is a great write up on the topic. What-is-a-positional-argument-in-Python-programming

class UserManager(BaseUserManager):
    def create_user(self, email, dob, password, accepted_tos=None):
        if not accepted_tos:
            raise ValueError("Must accept the Terms of Service.")

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

        user.set_password(password)
        user.save()
        return user

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

        user.is_staff = True
        user.is_superuser = True
        user.save()
        return user