Django команда вызова с параметрами - PullRequest
1 голос
/ 08 марта 2020

У меня есть команда управления со следующим разделом парсера аргументов:

class Command(BaseCommand):
    def add_arguments(self, parser):
        parser.add_argument('--out', action='store', dest='out', required=True)
        parser.add_argument('--todos', action='store', dest='todos', \
                required=True, nargs='+')
        parser.add_argument('--filter', action='store', dest='filter')
        parser.add_argument('--list', action='store', dest='list')
        parser.add_argument('--add_id', action='store_true', dest='add_id')

. Я пытаюсь вызвать эту команду из представления / оболочки, но она не работает:

from django.core.management import call_command
call_command('prg_name', out='/tmp/111.txt')

, однако я получил следующую ошибку: аргумент - требуется .

Программа довольно старая: python: 2.7 Django: 1.11.16

.

Как мне вызвать call_command с параметрами в этом старом макете?

Что странно, если я сделаю это:

dt = {'--out=/tmp/111.txt': sth}
call_command(prg_name, *dt)

, это работает, однако я не могу определить больше значения для --todos.

1 Ответ

0 голосов
/ 08 марта 2020

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

call_command(prg_name, '--out=/tmp/111.txt', <b>'--todos', '8', '12', '105', '51'</b>)

Вы можете видеть их как параметры, которые вы передали бы вашей программе, если бы вы вызывали ее из командной строки.

...