次のように別のスクリプトを呼び出すdjangoのカスタムコマンドがあります。
import script
from optparse import make_option
from django.core.management.base import BaseCommand
class Command(BaseCommand):
option_list = BaseCommand.option_list + (
make_option(
"-f",
"--files",
dest = "files",
help = "add files to list",
action='store_true',
default=False
),
# Some more options here
)
def handle(self, *args, **options):
script.main(files=options['files'])
私のカスタム スクリプトも使用しoptparse
ます。こんな感じです。
from optparse import OptionParser
opts = OptionParser()
opts.add_option('-f', '--files', dest='files', action='store_true', default=false, help='file help message')
opts = opts.parse_opts()[0]
FILE = opts.file
def main(files=false):
opts.files = files
# Do the processing
コマンドを実行しようとすると、常にオプションとして と のみを使用python manage.py command --option-other-than-file
してヘルプメッセージが出力されます。また、オプションのヘルプ メッセージは、コマンド ファイルではなく、インポート スクリプトで定義されたものです。また、それを使用してオプションを印刷しようとすると、同じメッセージが表示されます。オプションがどのようにオーバーライドされているかのようです。何が起こっているのか誰か教えてください。ありがとう。--help
--file
--files
python manage.py command --help
編集
これがクラスへのコードですBaseCommand