在Django管理员自定义命令两个参数(Two arguments in django-admin

2019-06-24 08:55发布

我有我用填充我的新信息数据库工作的Django管理员自定义命令。 再次,一切正常。

不过,我现在已经改变了我的模特和功能略有接受两个参数作为一个元组-姓氏名字,而不只是“名”。

低于此前码 - 工作。 运行使用“manage.py XYZ名1名2 NAME3 ......等(不同ARGS之间的空间)

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)

是否有可能在两个参数传递从第二个参数是可选Django的管理员自定义命令- >即(第一,最后=无)?

下面的伪代码的想什么,我用...运行“manage.py XYZ(first1,last1)(first2,last2)< - 或一些这方面的变化

我已经改变了功能DEF适当地接受这个作为一个独立的功能。 我只是不知道我怎么能得到Django的管理员命令现在的工作。

Answer 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


文章来源: Two arguments in django-admin custom command