2014-12-22 4 views
15

Мне нужно передать целочисленный аргумент в базовую команду в Django. Например, если мой код былАргумент команды управления Django

from django.core.management import BaseCommand 

class Command(BaseCommand): 
    def handle(self, *args, **options, number_argument): 
     square = number_argument ** 2 
     print square 

Я хотел бы сказать, питон manage.py square_command 4 и он вернется 16. Есть ли способ я могу передать аргумент через терминал к команде, я хочу, чтобы запустить ?

ответ

28

Добавить этот метод в класс Command:

def add_arguments(self, parser): 
    parser.add_argument('my_int_argument', type=int) 

Вы можете использовать опцию в коде, например:

def handle(self, *args, **options): 
    my_int_argument = options['my_int_argument'] 

на благо делать это таким образом, что help выход автоматически генерируется для manage.py my_command --help

+4

Документы здесь: https://docs.djangoproject.com/en/dev/howto/custom-management-commands/ – User

+1

Должен быть принятый ответ. – itsafire

+0

Что касается Django 2.8, это способ сделать это. – neuronet

2

Да. Механизм для этого описан here, но в основном вы можете получить аргумент от args[0].

+5

Нашел более полный ответ здесь: http://stackoverflow.com/questions/10568864/two-arguments-in-django-admin-custom -command? rq = 1 –

+0

Для тех, кто хочет больше деталей, см. ответ by acidjunk. – neuronet

+0

@PeterGraham теперь вы должны использовать метод 'add_arguments', который был добавлен в версии 1.8, поэтому я больше не буду рекомендовать более полный ответ. – neuronet

Смежные вопросы