【问题标题】:Two arguments in django-admin custom commanddjango-admin 自定义命令中的两个参数
【发布时间】:2012-05-13 02:25:22
【问题描述】:

我有一个 working django-admin 自定义命令,我用它来用新信息填充我的数据库。同样,一切正常。

但是,我现在稍微更改了我的模型和函数,以接受两个参数作为元组 - 名字和姓氏,而不仅仅是“名称”。

下面的以前的代码 - 工作。使用“manage.py xyz name1 name2 name3...等运行(不同参数之间的空格)

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-admin 自定义命令中传递两个参数,其中第二个参数是可选的 --> 即 (first, last=None)?

下面我想运行的伪代码...“manage.py xyz (first1, last1) (first2, last2)

我已经更改了函数 DEF 以将其作为独立函数适当地接受。我只是不确定如何让 django-admin 命令现在工作。

【问题讨论】:

    标签: python django django-admin arguments


    【解决方案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
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-28
    • 2010-11-20
    • 1970-01-01
    • 1970-01-01
    • 2011-06-14
    • 1970-01-01
    • 1970-01-01
    • 2015-07-25
    相关资源
    最近更新 更多