python manage.py custom commands code example

Example: django add custom commands to manage.py

# To implement the command, edit polls/management/commands/closepoll.py to look like this:
from django.core.management.base import BaseCommand, CommandError
from polls.models import Question as Poll

class Command(BaseCommand):
    help = 'Closes the specified poll for voting'

    def add_arguments(self, parser):
        parser.add_argument('poll_ids', nargs='+', type=int)

    def handle(self, *args, **options):
        for poll_id in options['poll_ids']:
            try:
                poll = Poll.objects.get(pk=poll_id)
            except Poll.DoesNotExist:
                raise CommandError('Poll "%s" does not exist' % poll_id)

            poll.opened = False
            poll.save()

            self.stdout.write(self.style.SUCCESS('Successfully closed poll "%s"' % poll_id))

 # polls/
 #   __init__.py
 #   models.py
 #   management/
 #       commands/
 #           _private.py
 #           closepoll.py
 #   tests.py
 #   views.py