This document is for Django's development version, which can be significantly different from previous releases. Get old docs here: 1.1, 1.0
Writing custom django-admin commands¶
Applications can register their own actions with manage.py. For example, you might want to add a manage.py action for a Django app that you’re distributing.
To do this, just add a management/commands directory to your application. Each Python module in that directory will be auto-discovered and registered as a command that can be executed as an action when you run manage.py:
blog/
__init__.py
models.py
management/
__init__.py
commands/
__init__.py
explode.py
views.py
In this example, the explode command will be made available to any project that includes the blog application in settings.INSTALLED_APPS.
The explode.py module has only one requirement -- it must define a class called Command that extends django.core.management.base.BaseCommand.
For more details on how to define your own commands, look at the code for the existing django-admin.py commands, in /django/core/management/commands.
Questions/Feedback
Having trouble? We'd like to help!
- Try the FAQ -— it's got answers to many common questions.
- Search for information in the archives of the django-users mailing list, or post a question.
- Ask a question in the #django IRC channel, or search the IRC logs to see if its been asked before.
- If you notice errors with this documentation, please open a ticket and let us know! Please only use the ticket tracker for criticisms and improvements on the docs. For tech support, use the resources above.

