Skip to content

Instantly share code, notes, and snippets.

@ichux
Created August 31, 2025 08:51
Show Gist options
  • Save ichux/8420d951c53588b20746a9d55952066b to your computer and use it in GitHub Desktop.
Save ichux/8420d951c53588b20746a9d55952066b to your computer and use it in GitHub Desktop.
#!/usr/bin/env python
"""
Simple script to create a Django superuser.
Run this from the project root directory.
"""
import os
import sys
import django
# Add the current directory to Python path
sys.path.insert(0, os.getcwd())
# Set Django settings module and setup
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "linklabs.settings")
django.setup()
from django.contrib.auth import get_user_model
from django.db import IntegrityError
User = get_user_model()
def create_superuser(username, email, password):
"""Create a superuser account."""
try:
# Check if user already exists
try:
user = User.objects.get(username=username)
if user.is_superuser:
print(f"Superuser '{username}' already exists.")
return user
else:
# Promote existing user to superuser
user.is_superuser = True
user.is_staff = True
user.save()
print(f"User '{username}' has been promoted to superuser.")
return user
except User.DoesNotExist:
pass
# Create new superuser
user = User.objects.create_superuser(
username=username,
email=email,
password=password
)
print(f"Superuser '{username}' created successfully.")
return user
except IntegrityError as e:
print(f"Error creating superuser: {e}")
return None
except Exception as e:
print(f"Unexpected error: {e}")
return None
if __name__ == "__main__":
if len(sys.argv) != 4:
print("Usage: python create_superuser_simple.py <username> <email> <password>")
sys.exit(1)
username = sys.argv[1]
email = sys.argv[2]
password = sys.argv[3]
create_superuser(username, email, password)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment