创建和运行管理命令

要使用命令行或其他服务(不使用用户/请求)在 Django 中执行操作,你可以使用 management commands

可以根据需要导入 Django 模块。

对于每个命令,需要创建一个单独的文件:myapp/management/commands/my_command.py
managementcommands 目录必须有一个空的__init__.py 文件)

from django.core.management.base import BaseCommand, CommandError

# import additional classes/modules as needed
# from myapp.models import Book

class Command(BaseCommand):
    help = 'My custom django management command'

    def add_arguments(self, parser):
       parser.add_argument('book_id', nargs='+', type=int)
       parser.add_argument('author' , nargs='+', type=str)

    def handle(self, *args, **options):
       bookid = options['book_id'] 
       author = options['author']
       # Your code goes here
        
        # For example:
        # books = Book.objects.filter(author="bob")
        # for book in books:
        #    book.name = "Bob"
        #    book.save()

这里的类名命令是必需的,它扩展了 BaseCommand 或其子类之一。

管理命令的名称是包含它的文件的名称。要在上面的示例中运行该命令,请在项目目录中使用以下命令:

python manage.py my_command

请注意,启动命令可能需要几秒钟(因为导入了模块)。所以在某些情况下,建议创建 daemon 进程而不是 management commands

更多关于管理命令