In ticket #5369, django-admin.py and manage.py are supposed to read all options, looking for --settings and --pythonpath, and then use those two if they're present to access app-supplied commands. The code (which was mine) has a bug, in that options stop getting read as soon as something other than --settings or --pythonpath gets hit.
Without the patch, you currently get:
>>> from django.core.management import LaxOptionParser, get_version
>>> from django.core.management.base import BaseCommand
>>> parser = LaxOptionParser(version=get_version(), option_list=BaseCommand.option_list)
>>> options, args = parser.parse_args('django-admin.py command --option --settings=settingsmodule --pythonpath=/home/user/django-dir'.split())
>>> print options
{'pythonpath': None, 'settings': None}
>>> args
['django-admin.py', 'command', '--settings=settingsmodule', '--pythonpath=/home/user/django-dir']
where both --pythonpath and --settings get ignored.
With the included patch, you get:
>>> from django.core.management import LaxOptionParser, get_version
>>> from django.core.management.base import BaseCommand
>>> parser = LaxOptionParser(version=get_version(), option_list=BaseCommand.option_list)
>>> options, args = parser.parse_args('django-admin.py command --option --settings=settingsmodule --pythonpath=/home/user/django-dir'.split())
>>> print options
{'pythonpath': '/home/user/django-dir', 'settings': 'settingsmodule'}
>>> args
['django-admin.py', 'command', '--option']
as desired.
If someone wants me to stick the doctest code somewhere, please tell me where. I think I may need to make a whole new folder, but I don't want to make a mess.