Django 调用带参数的命令

use*_*805 4 django python-2.7

我有一个带有以下参数解析器部分的管理命令:

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')
Run Code Online (Sandbox Code Playgroud)

。我试图从视图/外壳调用此命令,但不起作用:

from django.core.management import call_command
call_command('prg_name', out='/tmp/111.txt')
Run Code Online (Sandbox Code Playgroud)

,但是我收到以下错误:argument --out is required

该程序有点旧: python: 2.7 Django: 1.11.16

我应该如何使用这个旧布局调用带参数的 call_command ?

有什么奇怪的,如果我这样做:

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

它有效,但是我无法为 --todos 定义更多价值。

Wil*_*sem 5

您可以将任意数量的字符串传递给命令:

call_command(prg_name, '--out=/tmp/111.txt', '--todos', '8', '12', '105', '51')
Run Code Online (Sandbox Code Playgroud)

如果从命令行调用程序,您可以将这些视为传递给程序的参数。