从代码运行管理命令
- django.core.management.call_command(name, *args, **options)¶
要从代码使用call_command调用管理命令。
- name
- the name of the command to call.
- *args
- a list of arguments accepted by the command.
- **options
- named options accepted on the command-line.
例子:
from django.core import management
management.call_command('flush', verbosity=0, interactive=False)
management.call_command('loaddata', 'test_data', verbosity=0)
请注意,不带参数的命令选项将作为具有True或False的关键字传递,您可以在上面的interactive选项中看到。
命名参数可以通过使用以下语法之一传递:
# Similar to the command line
management.call_command('dumpdata', '--natural-foreign')
# Named argument similar to the command line minus the initial dashes and
# with internal dashes replaced by underscores
management.call_command('dumpdata', natural_foreign=True)
# `use_natural_foreign_keys` is the option destination variable
management.call_command('dumpdata', use_natural_foreign_keys=True)
Changed in Django 1.8:
由于使用argparse模块的管理命令,现在支持第一种语法。对于第二种语法,Django先前为命令传递了选项名称,现在它总是使用dest变量名称(可能与选项名称相同或不同)。
采用多个选项的命令选项传递列表:
management.call_command('dumpdata', exclude=['contenttypes', 'auth'])
输出重定向¶
请注意,您可以重定向标准输出和错误流,因为所有命令都支持stdout和stderr选项。例如,您可以写:
with open('/tmp/command_output') as f:
management.call_command('dumpdata', stdout=f)

浙公网安备 33010602011771号