Django настраиваемая команда управления - добавление значений по умолчанию для аргументов - PullRequest
1 голос
/ 06 августа 2020

Я использую Django 2.2 и хочу написать, чтобы добавить настраиваемую задачу (для приложения), которая загружает фикстуры в таблицы базы данных.

Это то, что у меня есть:

from django.core.management.base import BaseCommand
from django.core import management


class Command(BaseCommand):
    help = 'Generate Capture Data from loaded fixtures'

    def add_arguments(self, parser):
        parser.add_argument('definitions', type=str, help='Name of the definitions fixtures file', default='definitions.json')
        parser.add_argument('sections', type=str, help='Name of the sections fixtures file', default='sections.json')
        parser.add_argument('questions', type=str, help='Name of the questions fixtures file', default='questions.json')


    def handle(self, *args, **kwargs):
        print(kwargs)

Однако, когда я запускаю python manage.py generate_data, я получаю следующее исключение:

usage: manage.py generate_data [-h] [--version] [-v {0,1,2,3}]
                                    [--settings SETTINGS]
                                    [--pythonpath PYTHONPATH] [--traceback]
                                    [--no-color] [--force-color]
                                    definitions sections questions
manage.py generate_data: error: the following arguments are required: definitions, sections, questions

Почему значения по умолчанию, которые я предоставляю для add_arguments(), игнорируются?

1 Ответ

2 голосов
/ 06 августа 2020

Вероятно, вам нужно использовать nargs . Один из случаев, согласно документации:

'?'. Один аргумент будет использоваться из командной строки, если это возможно, и создаваться как отдельный элемент. Если аргумент командной строки не указан, будет создано значение по умолчанию.

Итак, код будет:

    parser.add_argument('definitions',  nargs='?', type=str, help='Name of the definitions fixtures file', default='definitions.json')
    parser.add_argument('sections',  nargs='?', type=str, help='Name of the sections fixtures file', default='sections.json')
    parser.add_argument('questions',  nargs='?', type=str, help='Name of the questions fixtures file', default='questions.json')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...