5

如何将多个带有值的参数从命令行传递到自定义 django 管理命令?

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

当我运行时:

./manage.py my_command str_arg1 value int_arg2 1 --settings=config.settings.local

我得到以下值options

options['str_arg1'] = ['str_arg1', 'value', 'int_arg2']
options['int_arg2'] = [1]

尝试在文档和在线搜索解决方案和多种传递参数的方法,但没有成功。Django 版本是 1.10。

谢谢

4

1 回答 1

8

您定义参数的方式意味着它们是位置参数。没有明智的方法来拥有多个消耗未知数量值的位置参数。

修改您的解析器以将它们指定为选项:

parser.add_argument('--str-arg1', nargs='+')
parser.add_argument('--int-arg2', nargs='+', type=int)

并修改调用:

./manage.py my_command --str-arg1 value --int-arg2 1
于 2017-04-10T20:16:43.813 回答