def METHOD_NAME(self, *args, **options):
    username = options.get('username', None)
    email = options.get('email', None)
    interactive = options.get('interactive')
    # Do quick and dirty validation if --noinput
    if not interactive:
        if not username or not email:
            raise CommandError("You must use --username and --email with --noinput.")
        if not RE_VALID_USERNAME.match(username):
            raise CommandError("Invalid username. Use only letters, digits, and underscores")
        try:
            is_valid_email(email)
        except exceptions.ValidationError:
            raise CommandError("Invalid email address.")
    password = ''
    # Try to determine the current system user's username to use as a default.
    try:
        import pwd
        default_username = pwd.getpwuid(os.getuid())[0].replace(' ', '').lower()
    except (ImportError, KeyError):
        # KeyError will be raised by getpwuid() if there is no
        # corresponding entry in the /etc/passwd file (a very restricted
        # chroot environment, for example).
        default_username = ''
    # Determine whether the default username is taken, so we don't display
    # it as an option.
    if default_username:
        try:
            User.objects.get(email=default_username)
        except User.DoesNotExist:
            pass
        else:
            default_username = ''
    # Prompt for username/email/password. Enclose this whole thing in a
    # try/except to trap for a keyboard interrupt and exit gracefully.
    if interactive:
        try:
            # Get a username
            # while 1:
            #     if not username:
            #         input_msg = 'Username'
            #         if default_username:
            #             input_msg += ' (Leave blank to use %r)' % default_username
            #         username = raw_input(input_msg + ': ')
            #     if default_username and username == '':
            #         username = default_username
            #     if not RE_VALID_USERNAME.match(username):
            #         sys.stderr.write("Error: That username is invalid. Use only letters, digits and underscores.\n")
            #         username = None
            #         continue
            #     try:
            #         User.objects.get(email=username)
            #     except User.DoesNotExist:
            #         break
            #     else:
            #         sys.stderr.write("Error: That username is already taken.\n")
            #         username = None
            # Get an email
            while True:
                if not email:
                    email = input('E-mail address: ')
                try:
                    is_valid_email(email)
                except exceptions.ValidationError:
                    sys.stderr.write("Error: That e-mail address is invalid.\n")
                    email = None
                else:
                    break
            # Get a password
            while True:
                if not password:
                    password = getpass.getpass()
                    password2 = getpass.getpass('Password (again): ')
                    if password != password2:
                        sys.stderr.write("Error: Your passwords didn't match.\n")
                        password = None
                        continue
                if password.strip() == '':
                    sys.stderr.write("Error: Blank passwords aren't allowed.\n")
                    password = None
                    continue
                break
        except KeyboardInterrupt:
            sys.stderr.write("\nOperation cancelled.\n")
            sys.exit(1)
    User.objects.create_superuser(email, password)
    print("Superuser created successfully.")