Использование argparse.REMAINDER для получения остальных параметров разбивает мои другие параметры

Итак, у меня есть этот кусок кода, который просто принимает мои параметры.

class InteractiveTenantOption(object):
    def add_arguments(self, parser):
        parser.add_argument("command")
        parser.add_argument(
            "-s", "--schema", dest="schema_name", help="specify tenant schema"
        )
        parser.add_argument("command_args", nargs=argparse.REMAINDER)

Команда выглядит следующим образом:

class Command(InteractiveTenantOption, BaseCommand):
    requires_system_checks = []
    help = "Wrapper around django commands for use with an individual tenant"

    def handle(self, command, schema_name, command_args, *args, **options):
        print(schema_name)
        tenant = self.get_tenant_from_options_or_interactive(
            schema_name=schema_name, **options
        )
        connection.set_tenant(tenant)
        call_command(command, *command_args, *args, **options)

проблема в том, что

print(schema_name)

возвращает None для каждой команды.

До того, как я добавил

        parser.add_argument("command_args", nargs=argparse.REMAINDER)

что print не возвращает None.

Например, если я запускаю:

python manage.py tenant_command test_command -s demoproject
print result before adding parser.add_argument("command_args", nargs=argparse.REMAINDER):
demoproject
print result after adding parser.add_argument("command_args", nargs=argparse.REMAINDER):
None

Почему он изменился и как я могу это исправить?

Спасибо.

Вернуться на верх