Django命令覆盖必需的参数

时间:2017-06-28 14:40:34

标签: python django argparse

我在下面有一个django命令,我可以将汽车模型作为参数传递,并且它有效。但是,我想添加列表模型的功能,而无需首先传入模型。例如,调用python manage.py car_models --list_models不起作用,因为它需要某些东西来满足model arg,而像python manage.py car_models Cruze --list_models这样的东西可以工作,即使从UX的角度来看,知道汽车的模型在你列出之前是不可能的。

tl;博士,我想要{em}所需的model参数,除非 --list_models标签正在使用中。有谁知道解决这个问题?

class Command(BaseCommand):
    help = 'Car models'

    def add_arguments(self, parser):

        parser.add_argument('model', help='model of car')

        # I want to make it so that if a user says `python manage.py car_models --list_models`, 
        # the user doesn't get yelled at for not passing in a model arg
        parser.add_argument(
            '--list_models',
            '-lm',
            dest='list_models',
            action='store_true',
            help='List available car models',
        )


    def handle(self, *args, **options):

        if options['list_models']:
            print(['Cruze', 'Tahoe', 'Impala'])
            return

        print("Your car is {}".format(options['model']))

0 个答案:

没有答案