Django自定义管理命令,具有可变长度的args列表

时间:2013-11-04 10:21:29

标签: python django

我正在编写自定义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列表?

1 个答案:

答案 0 :(得分: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']将包含字段名称列表或无。您可以检查这个(以及列表超过五个元素的事实)并打印错误消息。