One of the recipes from the documentation suggests:
For positional arguments with nargs equal to
?
or*
, thedefault
value is used when no command-line argument was present.
So following should do the trick (it will return value if provided or default value otherwise):
parser.add_argument('delay', type=int, nargs="?", default=21)
Usage:
$ ./manage.py mycommand
21
$ ./manage.py mycommand 4
4