Why are management commands not in their own app-level folder? Are there other items which can be added to the management directory or is this structure purely vestigial?
In addition, manage.py is automatically created in each Django project. It does the same thing as django-admin but also sets the DJANGO_SETTINGS_MODULE environment variable so that it points to your project's settings.py file.
I don't know the history, but it seems semi-vestigial to me. As for other stuff that can be put in the management dir, the comment about signals above hints at one answer.
One thing I do when trying to answer such questions is to look at the contrib apps to see what they do. Some interesting bits to be found:
auth/management/__init__.py
sites/management.py
Note that in the second one, the management module is a .py file rather than a directory.
Another thing that needs to be placed in the management
module (either in management/__init__.py
or management.py
) is any listeners to the django.db.models.signals.post_sync
signal.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With