0

我正在编写一个自定义 django 管理命令。

class Command(BaseCommand):

    option_list = BaseCommand.option_list + (
        make_option(
            "-i",
            "--user_id",
            dest="user_id",
        ),
        make_option(
            "-f",
            "--fields",
            dest="fields"
        ),
    )

我需要fields包含多个元素。我知道,nargs但我需要指定一个确切的数字。我fields可以从 1 到 5 个元素不等。有没有合适的方法来处理这样的 args 列表?

4

1 回答 1

2

不可能自动执行此操作。但是您可以使用不同的操作类型:

option_list = BaseCommand.option_list + (
    make_option(
        "-i",
        "--user_id",
        dest="user_id",
    ),
    make_option(
        "-f",
        "--fields",
        dest="fields",
        action="append",
    ),
)

现在在命令行提供多个字段名称,如下所示:

./my_program -u my_user -f field1 -f field2 -f field3

options['fields']然后将包含字段名称列表或无。您可以检查这一点(以及列表长于五个元素的事实)并打印错误消息。

于 2013-11-04T11:43:46.867 回答