修改 Django 命令参数

Modifying Django Command argument

假设我有这样的命令:

class Command(object):
    help = 'roll over and die'

    def add_arguments(self, parser):
        parser.add_argument(
            '--foo',
            help='see command help',
            choices=['die','die_painfully'],
            required=True
        )
        parser.add_agument( ... )          x 9001

现在我想要一个几乎相同的 class 但我不想再需要参数 '--foo' 了。如果我 super 继承方法中的漏洞 add_arguments 或其他东西,你能以某种方式修改那个解析器吗?

您可以使用 class 属性:

class Command(object):
    help = 'roll over and die'
    foo_required = True

    def add_arguments(self, parser):
        parser.add_argument(
            '--foo',
            # ...
            required=self.foo_required
        )

然后在继承Command:

class Command(foo.bar.Command):
    foo_required = False

而且您不必覆盖 add_arguments