I’m trying to customize the admin index of an open source app without changing too many things.
I thought I could easily do what I need just by checking the name of the models contained in app_list.models.
Something like:
if model is "interface" or "device":
show it
But i can’t find a value that doesn’t change depending on the settings and language of the django instance.
if i print some info in the template with:
{{ app_list.1.models.2 }}
I get:
{'perms':
{'add': True, 'change': True, 'delete': True},
'add_url': '/nodeshot-server/admin/nodeshot/interface/add/',
'admin_url': '/nodeshot-server/admin/nodeshot/interface/',
'name': <django.utils.functional.__proxy__ object at 0x7f67fced6ed0>
}
The add_url and admin_url depend on the settings, infact on my local instance “nodeshot-server” is the folder of the project while online is just “/admin/nodeshot/ecc.”.
The name key is also unreliable because it depends on the language in use, so if the language is Italian the name key won’t be “interface” but “interfaccia”.
Is there a way to retrieve the original name of the model (instead of the translated one) without changing the view? I don’t really know what “django.utils.functional._proxy” although it looks like a mecchanism for lazy evaluation.
If is not possible I suppose I will have to write a custom view for the admin index.. right?
The correct answer to this question is:
Use the bit that doesn’t change in the if clause: