我在下面有一个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']))