dieron el mismo problema, aquí lo que se le ocurrió .
Al igual que en la solución anterior - copiar index.html de Django para su /admin/index.html y modificar así:
{% for model in app.models %}
{% if not model.perms.list_hide %}
<tr>
...
</tr>
{% endif %}
{% endfor %}
Y crear ModelAdmin subclase:
class HiddenModelAdmin(admin.ModelAdmin):
def get_model_perms(self, *args, **kwargs):
perms = admin.ModelAdmin.get_model_perms(self, *args, **kwargs)
perms['list_hide'] = True
return perms
Ahora, cualquier modelo registrado con la subclase HiddenModelAdmin no aparecerá en la lista de administración, pero estará disponible en el símbolo "más" en detalle:
class MyModelAdmin(HiddenModelAdmin):
...
admin.site.register(MyModel, MyModelAdmin)
Agradable y conciso. ¡Gracias! –
De acuerdo. Solo que eso es un problema cuando no quiero cambiar el código. Lo que quiero decir es que tengo una aplicación base que quiero mantener limpia de las dependencias de otras aplicaciones. Guardo estas dependencias en una aplicación derivada de proyecto específico. Ahora quiero que la interfaz de administrador solo muestre la aplicación derivada, no la aplicación base. Django requiere que la aplicación base aparezca en la configuración/INSTALLED_APPS para que funcione la aplicación derivada. Obviamente, la aplicación base no debería mostrarse, pero al mismo tiempo no quiero mantenerla sin modificaciones y reutilizable. Vea [aquí] ([se]/questions/13923968 /). – Sven
Una forma más corta: 'get_model_perms = lambda self, req: {}' –