Django 编写带有参数和选项的自定义管理命令-需要的字段说明

Django 编写带有参数和选项的自定义管理命令-需要的字段说明,django,command,Django,Command,在我的django应用程序中,我正在编写一个自定义管理命令,该命令将根据传递的参数创建对象实例,并根据是否传递选项--save将其保存到数据库中 在这方面,我得到了来自政府的很多帮助。我们还从中获得了关于如何传递多个参数以及如何拥有选项的重要提示 from optparse import make_option class Command(BaseCommand): option_list = BaseCommand.option_list + ( make_option('--d

在我的django应用程序中,我正在编写一个自定义管理命令,该命令将根据传递的参数创建对象实例,并根据是否传递选项
--save
将其保存到数据库中

在这方面,我得到了来自政府的很多帮助。我们还从中获得了关于如何传递多个参数以及如何拥有选项的重要提示

from optparse import make_option

class Command(BaseCommand):
  option_list = BaseCommand.option_list + (
    make_option('--delete',
        action='store_true',
        dest='delete',
        default=False,
        help='Delete poll instead of closing it'),
    )

  def handle(self, *args, **options):
    # ...
    if options['delete']:
        poll.delete()
    # ...
但是,我无法找到make_选项中字段的详细说明。例如列表

在这篇
help
中,我明白了
dest
的意思,但我不清楚
action='store\u true'
的意思。事实上,如果有人能给我一个简短的描述,
make_option
的所有参数的含义,那就太好了

非常感谢

可能会更有帮助。您基本上是在告诉管理职能部门您需要的每个选项应该做什么

关键字是最能说明问题的,它配置了您希望使用该选项执行的操作—它只是一个执行特殊操作的标志(一个
回调
,即--enable feature')还是应该接受一个参数,例如(
存储
,即--things 10')

考虑到这一点,剩下的选项就更有意义了。通读以获得您所列出内容的解释,然后查看我在上述文档中提到的关于make_选项的解释 make_option()是一个工厂函数,用于创建选项实例; 当前,它是选项构造函数的别名。未来版本 optpasse的可将选项拆分为几个类,并使_Option()成为 将选择要实例化的正确类。不实例化选项 直接的

以下是所有可能的选项属性:

django管理命令中的常见用法:
这不适用于Django 1.8,因为它已被弃用。请在此页面查找更多信息:
Instance attributes:
_short_opts : [string]
_long_opts : [string]

action : string
type : string
dest : string
default : any
nargs : int
const : any
choices : [string]
callback : function
callback_args : (any*)
callback_kwargs : { string : any }
help : string
metavar : string
class Command(BaseCommand):
    help = "Command to import a list of X"
    option_list = BaseCommand.option_list + (
        make_option(
            "-f", 
            "--file", 
            dest = "filename",
            help = "specify import file", 
            metavar = "FILE"
        ),
    )

    option_list = option_list + (
        make_option(
            "-s", 
            "--slug", 
            dest = "category",
            help = "category slug", 
            metavar = "SLUG"
        ),
    )

    def handle(self, *args, **options):
            # make sure file option is present
            if options['filename'] == None :
                raise CommandError("Option `--file=...` must be specified.")
        
            # make sure file path resolves
            if not os.path.isfile(options['filename']) :
                raise CommandError("File does not exist at the specified path.")
    
            # make sure form option is present
            if options['category'] == None :
                raise CommandError("Option `--slug=...` must be specified.")