Django の管理コマンドを作成しようとしていますが、問題が発生しました。option_list
変数は、フラット化されたオプションのリストである必要があるようです。
簡潔にするために編集されたコードは次のとおりです。実行されます。
def add_options(self, parser):
group = OptionGroup(parser, "Global Options")
group.add_option("--logfile", metavar="FILE", \
help="log file. if omitted stderr will be used")
...
...
...
group.add_option("-s", "--set", action="append", default=[], metavar="NAME=VALUE", \
help="set/override setting (may be repeated)")
parser.add_option_group(group)
parser.add_option("-t", "--output-format", metavar="FORMAT", default="jsonlines", \
help="format to use for dumping items with -o (default: %default)")
すべてのオプション変数を取得し、フラット化してから、オプションを保持しながら をparser
削除し、それらを新しい変数に入れる必要があります。OptionGroup
Django には、このようなオプションを指定するクラスが必要です。これにより、反復処理が可能になります。
option_list = (
make_option('-v', '--verbosity', action='store', dest='verbosity', default='1',
type='choice', choices=['0', '1', '2', '3'],
help='Verbosity level; 0=minimal output, 1=normal output, 2=verbose output, 3=very verbose output'),
make_option('--settings',
help='The Python path to a settings module, e.g. "myproject.settings.main". If this isn\'t provided, the DJANGO_SETTINGS_MODULE environment variable will be used.'),
make_option('--pythonpath',
help='A directory to add to the Python path, e.g. "/home/djangoprojects/myproject".'),
make_option('--traceback', action='store_true',
help='Print traceback on exception'),
)
これを達成する方法に非常に迷っています。