我想实现带有必需和可选参数的导入功能,以这种方式运行:
python manage.py import --mode archive
其中需要
--mode
,还需要 archive
。
我正在使用 argparse 库。
class Command(BaseCommand):
help = 'Import'
def add_arguments(self, parser):
parser.add_argument('--mode',
required=True,
)
parser.add_argument('archive',
required=True,
default=False,
help='Make import archive events'
)
但是我收到错误:
TypeError: 'required' is an invalid argument for positionals
您创建了一个位置参数(名称前面没有
--
选项)。位置参数“总是”是必需的。您不能将 required=True
用于此类选项,只需删除 required
即可。也删除 default
;必需的参数不能有默认值(无论如何都不会使用它):parser.add_argument('archive',
help='Make import archive events'
)
如果您想让
archive
成为命令行开关,请使用
--archive
代替。--mode archive
应该意味着“模式是存档”,换句话说
archive
是 --mode
参数的 value,而不是单独的参数。如果是的话,那一定是--archive
,这不是你想要的。只需省略
archive
的定义即可。