Django Custom Management Command

MicroPyramid
1 min readApr 3, 2017

--

In Django project, We could manage by executing some commands which could be invoked through the manage.py.

For example:

# Sync database
python manage.py syncdb

# Start the webserver
python manage.py runserver

Management Command is used to create our own actions with manage.py.

If your app is in projectdirectory then create the directories projectdirectory/app/management/commands.

Create an empty file called __init__.py in both the management and commands directories. Once you’ve done that every other python file in the commands directory can be executed via manage.py.

If you create the file project/app/management/commands/management_command.py. Django will register a manage.py command for each Python module in that directory whose name doesn’t begin with an underscore, then it can be run as manage.py management_command.

In the app which the command is used for make the following directory structure:

management/
__init__.py
commands/
__init__.py
your_command_name.py
from django.core.management.base import BaseCommand, CommandErrorfrom django.conf import settingsfrom django.core.management import call_commandimport jsonclass Command(BaseCommand): args = '' help = 'Loads the initial data in to database' def handle(self, *args, **options):
# Your Code
call_command('loaddata', 'peeldb/fixtures/countries.json', verbosity=0)
call_command('loaddata', 'peeldb/fixtures/states.json', verbosity=0)
call_command('loaddata', 'peeldb/fixtures/cities.json', verbosity=0)
call_command('loaddata', 'peeldb/fixtures/skills.json', verbosity=0)
call_command('loaddata', 'peeldb/fixtures/industries.json', verbosity=0)
call_command('loaddata', 'peeldb/fixtures/qualification.json', verbosity=0)
result = {'message': "Successfully Loading initial data"}
return json.dumps(result)

In the above example, I’m using management command to load the initial data from the fixtures into the database.In the above code, call_command calls the built-in management commands, with the given options and args/kwargs.

Some examples:
call_command(‘syncdb’), call_command(‘shell’, plain=True), call_command(‘sqlall’, ‘myapp’)

The article was originally published at MicroPyramid blog.

--

--

MicroPyramid
MicroPyramid

Written by MicroPyramid

Python, Django, Android and IOS, reactjs, react-native, AWS, Salesforce consulting & development company

No responses yet