Menu Close

How to automate createsuperuser on Python Django?

Sometimes, we want to automate createsuperuser on Python Django.

In this article, we’ll look at how to automate createsuperuser on Python Django.

How to automate createsuperuser on Python Django?

To automate createsuperuser on Python Django, we can create a command.

For instance, we write

from django.contrib.auth.management.commands import createsuperuser
from django.core.management import CommandError


class Command(createsuperuser.Command):
    help = 'Crate a superuser, and allow password to be provided'

    def add_arguments(self, parser):
        super(Command, self).add_arguments(parser)
        parser.add_argument(
            '--password', dest='password', default=None,
            help='Specifies the password for the superuser.',
        )

    def handle(self, *args, **options):
        password = options.get('password')
        username = options.get('username')
        database = options.get('database')

        if password and not username:
            raise CommandError("--username is required if specifying --password")

        super(Command, self).handle(*args, **options)

        if password:
            user = self.UserModel._default_manager.db_manager(database).get(username=username)
            user.set_password(password)
            user.save()

to create the Command class that’s a subclass of the createsuperuser.Command class.

In it, we add the password argument within the add_arguments method.

And then in the handle method, we get the command line arguments from options.get.

Next, we add some validation with if statements and call save is the password and username are set.

Conclusion

To automate createsuperuser on Python Django, we can create a command.

Posted in Python, Python Answers