Je veux implémenter la fonction d'importation avec les paramètres obligatoires et facultatifs, pour exécuter cela de cette manière:
python manage.py import --mode archive
où --mode
est obligatoire et archive
également.
J'utilise la bibliothèque argparse.
class Command(BaseCommand):
help = 'Import'
def add_arguments(self, parser):
parser.add_argument('--mode',
required=True,
)
parser.add_argument('archive',
required=True,
default=False,
help='Make import archive events'
)
Mais j'ai reçu une erreur:
TypeError: 'required' is an invalid argument for positionals
Vous avez créé un argument positionnel (pas de --
option devant le nom). Les arguments positionnels sont toujours requis. Vous ne pouvez pas utiliser required=True
pour de telles options, déposez simplement le required
. Déposez également le default
; un argument requis ne peut pas avoir de valeur par défaut (il ne sera jamais utilisé de toute façon):
parser.add_argument('archive',
help='Make import archive events'
)
Si vous vouliez que archive
soit un commutateur de ligne de commande, utilisez --archive
au lieu.
Je pense que --mode archive
est censé signifier "le mode est archive", en d'autres termes archive
est le valeur du --mode
argument, pas un argument séparé. Si tel était le cas, il faudrait que ce soit --archive
ce n'est pas ce que vous voulez.
Oubliez simplement la définition de archive
.