The Django doc tell me how to add an option to my django custom management command, via an example:
from optparse import make_option
class Command(BaseCommand):
option_list = BaseCommand.option_list + (
make_option('--delete',
action='store_true',
dest='delete',
default=False,
help='Delete poll instead of closing it'),
)
Then the docs just stop. How would one write the handle
method for this class to check whether the user has supplied a --delete
option? At times Django makes the easy things difficult :-(
You can do it like this:
Do note that some keywords in Python are reserved so you can handle those using
**kwargs
. Otherwise you can use normal arguments (like I did withclose
)A little suggestion about defining the commands (key name,
dest
) and handling default values (inmake_option
and in the command):In Django code you'll find "keyword arguments" (
**kwargs
) often named as**options
, which is more suggestive (I stick to this naming convention).The default value can be either specified in make_option, or through the
dict.get
method, which allows for a default value.There's no reason not u use both defaults, should your
Command.handle
method be called manually, where the**options
dictionary could be missing this entry.