Django Custom Management Command

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. This will make that every other python file in the commands directory can be executed via manage.py command.

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, CommandError

from django.conf import settings

from django.core.management import call_command

import json

class 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’)

    By Posted On
SENIOR DEVELOPER at MICROPYRAMID

Need any Help in your Project?Let's Talk

Latest Comments
Related Articles
Understanding django serializers with examples Vamsi Popuri

Serializers are used for “translating” Django models into other formats like xmi,json,yaml(YAML Ain’t a Markup Language)

from django.core import serializers
data = serializers.serialize("xml", SomeModel.objects.all())

Continue Reading...
Celery Flower to monitor task queue Swetha Naretla

Celery is a task queue that is to built an asynchronous message passing system. It can be used as a bucket where programming tasks can ...

Continue Reading...
How to filter a Django Queryset using Extra Swetha Naretla

Using SQL Queries in Django ORM - Filtering extra objects within in a single query, to reduce the number of queries.

Continue Reading...

Subscribe To our news letter

Free news and articles on Django, Python, Machine Learning, Amazon Web Services, DevOps, Salesforce, ReactJS, AngularJS, React Native.
*We don't provide your email contact details to any third parties