我想用必需和可选参数实现导入功能,以这种方式运行:
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
2条答案
按热度按时间pieyvz9o1#
您创建了一个位置参数(名称前面没有
--
选项)。位置参数是 * 始终 * 必需的。您不能使用required=True
作为此类选项,只需删除required
即可。把default
也扔掉; required参数不能有默认值(它永远不会被使用):如果您想让
archive
成为一个命令行开关,请使用--archive
。2wnc66cl2#
我认为
--mode archive
的意思应该是“模式是存档”,换句话说,archive
是--mode
参数的 * 值 *,而不是一个单独的参数。如果是的话,它必须是--archive
,这不是你想要的。只需要省略
archive
的定义。