我想用必需参数和可选参数实现导入功能,以这种方式运行:
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
答案 0 :(得分:17)
您创建了一个位置参数(名称前面没有--
选项)。位置参数始终是必需的。您无法使用required=True
获取此类选项,只需删除required
即可。放弃default
;必需的参数不能具有默认值(它永远不会被使用):
parser.add_argument('archive',
help='Make import archive events'
)
如果您希望archive
成为命令行切换,请改用--archive
。
答案 1 :(得分:2)
我认为--mode archive
应该表示“模式是归档”,换句话说archive
是--mode
参数的值,而不是单独的论点。如果是,那就必须是--archive
而不是你想要的。
请忽略archive
。