Два аргумента в пользовательской команде django-admin

у меня естьworking Пользовательская команда django-admin, которую я использую для заполнения своей базы данных новой информацией. Опять все работает.

Однако теперь я немного изменил свои модели и функции, чтобы принимать два аргумента в виде кортежа - имяand фамилия, а не просто «имя».

Предыдущий код ниже - рабочий. Запустите, используя & quot; manage.py xyz name1 name2 name3 ... и т. Д. (Пробел между различными аргументами)

<code>from django.core.management.base import BaseCommand, CommandError
from detail.models import ABC
from detail.parser import DEF

class Command(BaseCommand):
    args = '<name...>'
    help = 'Populates the ABC class database'

    def handle(self, *args, **options):
        for symbol in args:

            try:
                info = DEF(name)
</code>

Is it possible to pass on two arguments from the django-admin custom command where the second argument is optional --> i.e. (first, last=None)?

Ниже псевдокод того, что я хотел бы запустить с помощью ... "manage.py xyz (first1, last1) (first2, last2) & lt; - или некоторый вариант этого

Я уже изменил функцию DEF, чтобы принять ее соответствующим образом как отдельную функцию. Я просто не уверен, как заставить команду django-admin работать сейчас.

Ответы на вопрос(1)

Решение Вопроса

Это вполне возможно, хотяdjango.core.management не предоставляет конкретный инструмент для этого. Вы можете проанализировать аргументы, переданные черезargs Ключевой аргумент. Вам придется придумать синтаксис для этого (определение синтаксиса вhelp атрибут команды, вероятно, будет хорошей идеей).

Предполагая, что синтаксисfirstname.lastname, или простоfirstname в случае, если фамилия не указана, вы можете сделать что-то вроде:

def handle(self, *args, **options):
    for arg in args:
        try:
            first_name, last_name = arg.split('.')
        except ValueError:
            first_name, last_name = arg, None

        info = DEF(first_name, last_name)

И пользователи команды могут передавать аргументы примерно так:

$ python manage.py yourcommand -v=3 john.doe bill patrick.bateman
 02 янв. 2018 г., 16:10
Этот ответ устарел, теперь у Джангоadd_arguments встроенный метод, который был добавлен в v1.8. Увидеть:docs.djangoproject.com/en/2.0/howto/custom-management-commands
 26 апр. 2016 г., 08:58
@modocache -v = 3? что это будет делать?
 snakesNbronies13 мая 2012 г., 23:04
СПАСИБО! Это сработало хорошо. Первоначально я надеялся получить два отдельных аргумента, но это работает одинаково.

Ваш ответ на вопрос