【问题标题】:python django create own command and add list as parameterpython django 创建自己的命令并添加列表作为参数
【发布时间】:2019-11-21 08:55:03
【问题描述】:

我想使用 py manage.py own_command。

我得到以下代码:

from django.core.management.base import BaseCommand


class Command(BaseCommand):
    help = 'create user'

    def add_arguments(self, parser):
        parser.add_argument('--username', type=str, help='set username')
        parser.add_argument('--password', type=str, help='set password')
        parser.add_argument('--email', type=str, help='set password')
        parser.add_argument('--group', type=list, default=[], action='append', help='set group(s) like ["basic", "advanced"]')
        parser.add_argument('--permission', type=list, default=[], action='append', help='set permission(s) like ["delete", "write"]')

>py manage.py create_app_user --username dustin --password hdf --email "" --group ["admin", "basic"
]

创造

usage: manage.py create_app_user [-h] [--username USERNAME]
                                 [--password PASSWORD] [--email EMAIL]
                                 [--group GROUP] [--permission PERMISSION]
                                 [--version] [-v {0,1,2,3}]
                                 [--settings SETTINGS]
                                 [--pythonpath PYTHONPATH] [--traceback]
                                 [--no-color]
manage.py create_app_user: error: unrecognized arguments: basic

]

我找到了适用于 django =2.1

的解决方案

【问题讨论】:

  • 您是否尝试过将 --group 参数放在引号中,例如'[“管理员”,“基本”]'
  • @OsmanOmar 它不是重复的,正如我在底部写的那样 --> 你的票是 django 的解决方案
  • @Steve,同样的错误输出

标签: python django command


【解决方案1】:

您只需要指定nargs='*',允许0 个或多个值,或nargs='+' 允许1 个或多个值,例如:

parser.add_argument(
    '--group',
    nargs='*',
    help='set group(s) like "basic", "advanced"',
)

另外,您需要调用不带方括号或逗号的命令:

py manage.py create_app_user --username dustin --password hdf --email "" --group "admin" "basic"

【讨论】:

  • almoust,但输出 group = kwargs['group'] 看起来像 member of group(s): [[['a', 'd', 'm', 'i', 'n'], ['b', 'a', 's', 'i', 'c']]]
  • 对,你其实不需要type=list、action和default,它们是从nargs推断出来的
  • 完美。 parser.add_argument('--group', nargs='+', help='set group(s) like "basic" "advanced"')
  • 酷,如果它解决了你的问题,请接受答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
  • 2015-08-30
  • 2018-10-27
  • 2016-01-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多