Say I have an app with ModelA, ModelB, and ModelC
For my app’s admin page (/admin/app), how do I hook into the display of the “App administration” page so I may hide Model types that are empty (have no instances)?
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
That’s a big ask, because you’d have to dynamically register/unregister apps according to the results of a database/ORM query (a count(), at least) for each of the models that each of the
INSTALLED_APPScontains.Every single time you viewed the admin.
While that in itself is unpleasant enough, bear in mind that
admin.pyfor each app is processed at server restart/reload time (IIRC), so you could’t hope to hook up something cute like those DB lookups there, as it’d only get run once and not reflect the actual state of models currently have objects stored in your database.Better move: leave it be. If there are no objects to view for a given model, then there are no objects to view for a given model.
If you’re concerned about your client/user making new models in there when they shouldn’t, then that’s a combination of user education and admin user permissions that you can sort out.
As said in a few places: “The Admin is not your app.” If the customization goes beyond the trivial, it’s time to write your own views. You can still hook them in to the admin site by overriding the base admin template and even serving them from the same root path as the rest of your admin.