Пользовательская команда и возможность импорта из многих источников - PullRequest
0 голосов
/ 04 июля 2018

Я работаю над импортом в django 1.8. Я хотел бы иметь возможность импортировать данные из двух источников - одного и двух.

Если я введу в аргумент команды один (python manage.py import_data one) - я импортирую данные из одного, а то же самое с двумя - два в команде - из источника два (python manage.py import_data two).

Но сейчас, когда я хочу запустить python manage.py import_data two в дескрипторе, я получил one вместо two.

class Command(BaseCommand):
    def add_arguments(self, parser):
        parser.add_argument('one', type=str, nargs='?', default='one')
        parser.add_argument('two', type=str, nargs='?', default='two')

    def handle(self, *args, **options):
        if options['one']:
            print('one')
            return
        if options['two']:
            print('two')
            return

1 Ответ

0 голосов
/ 04 июля 2018

Вы используете argparse неправильно. У вас есть два отдельных аргумента, каждый из которых имеет значение по умолчанию - поэтому, если вы не укажете one, для него будет установлено значение по умолчанию «один», что противоречит цели.

Вместо этого у вас должен быть один аргумент, source, который может иметь значения "один" или "два":

parser.add_argument('source', type='str', nargs=1, choices=['one', 'two'])

Теперь вы можете сделать:

if options['source'] == 'one':
    ...
...