Обязательные аргументы для переопределения команды Django

У меня есть команда django ниже, где я могу передать модель автомобиля в качестве аргумента, и она работает. Однако я хочу добавить функциональность к списку моделей без необходимости сначала передавать модель. Например, вызов python manage.py car_models --list_models не сработает, так как он требует чего-то для удовлетворения model arg, тогда как что-то вроде python manage.py car_models Cruze --list_models будет работать, даже если с точки зрения UX знать модель автомобиля до того, как вы ее перечислите, невозможно.

tl; dr, я хочу иметь обязательный аргумент 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']))

person mjkaufer    schedule 28.06.2017    source источник
comment
Один положительный номер с nargs='?' принимается взаимоисключающей группой. Сделайте эту группу «обязательной». Я могу добавить пример позже.   -  person hpaulj    schedule 28.06.2017
comment
Пример: stackoverflow.com/questions/34337653/   -  person hpaulj    schedule 28.06.2017
comment
@hpaulj, спасибо, у меня это очень хорошо сработало.   -  person mjkaufer    schedule 28.06.2017