2014-10-26 6 views
1

Как включить пользовательскую команду Django для приема нескольких аргументов? Предположим, что моя команда будет называться process_data, и в myproject/myapp/management/commands/process_data.py я следующее:Передача нескольких аргументов в пользовательской команде Django

class Command(BaseCommand): 
    def handle(self, *args, **options): 
     alpha = args[0] 
     beta = args[1] 

А затем вызовите команду следующим образом:

>python manage.py process_data 5 16 

Я получаю ошибку:

manage.py: error: no such option: 16 

Это говорит о том, что он видит мой второй аргумент 16 как часть **options, а не второй аргумент в *args , Как я могу гарантировать, что он обрабатывается как аргумент?

ответ

1

Вы не добавляете опции к команде управления, как это. Проверьте Django documentation about writing management commands.

Переписывая ваш пример без тестирования (она может иметь опечаток):

from optparse import make_option 
class Command(BaseCommand): 
    option_list = BaseCommand.option_list + (
     make_option('--alpha', 
      action='store', 
      dest='alpha'), 
     make_option('--beta', 
      action='store', 
      dest='beta'), 
     ) 

    def handle(self, *args, **options): 
     alpha = options['alpha']: 
     beta = options['beta'] 
     # ... 
Смежные вопросы