Titel sagt eigentlich alles, aber ich dies derzeit haben, aber es funktioniert nicht:Ist es möglich, Unterparser in einem Django-Management-Befehl zu erstellen?
class Command(BaseCommand):
help = ("Functions related to downloading, parsing, and indexing the "
"content")
def add_arguments(self, parser):
subparsers = parser.add_subparsers()
download_parser = subparsers.add_parser(
'download',
help='Using a local CSV, download the XML data for content. '
'Output is sent to the log.'
)
download_parser.add_argument(
'--start_line',
type=int,
default=0,
help='The line in the file where you wish to start processing.'
)
# Add an argparse parser for parsing the content. Yes, this is
# a bit confusing.
content_parser_parser = subparsers.add_parser(
'parse',
help="Look at the file system and parse everything you see so that "
"we have content in the databse."
)
content_parser_parser.add_argument(
'--start_item',
type=int,
default=0,
help="Assuming the content is sorted by file name, this item is "
"the one to start on."
)
Meine konkrete Idee ist, einen Befehl zu erstellen, die Unterbefehle für das Herunterladen von XML-Inhalten oder zum Parsen in die Datenbank hat .
Ohne zu wissen, was bereits in der 'parser' ist, oder was' django' tut es mit ihm später, kann ich nicht sagen, . Aus der Hand sehen Ihre Subparser-Definitionen gut aus.Wie Sie jedoch aus anderen SO-Fragen sehen können, kann die Erstellung von Subparsern mit anderen Argumenten, Positions- und/oder Optionals, schwierig sein. Fügen Sie zu Beginn Ihrer Funktion 'print parser._actions' hinzu. – hpaulj
http://stackoverflow.com/questions/31919101/djangos-call-command-fails-with-missing-required-arguments, ist eine vorherige Frage, die sowohl argparse als auch django betrifft. Sieht so aus, als hätte Django Optparse benutzt, aber kürzlich die Alternative argparse hinzugefügt. – hpaulj