Being a nitpicker, would it be enough to use the default django --settings? I understand that having --environment helps us limit to the settings for the particular project. However, having an "environment" abstraction on top of the settings "abstraction" seems a bit confusing to me.

My idea would be something like:

manage.py lms runserver --settings=dev

Where we add some extra logic to resolve dev to the default project/path.