avuto lo stesso problema, ecco quello che mi si avvicinò con .
Come nella precedente soluzione - copiare index.html da Django al vostro /admin/index.html e modificarlo in questo modo:
{% for model in app.models %}
{% if not model.perms.list_hide %}
<tr>
...
</tr>
{% endif %}
{% endfor %}
E creare ModelAdmin sottoclasse:
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
Ora, qualsiasi il modello registrato con la sottoclasse HiddenModelAdmin non verrà visualizzato nell'elenco degli amministratori, ma sarà disponibile tramite il simbolo "più" in dettaglio:
class MyModelAdmin(HiddenModelAdmin):
...
admin.site.register(MyModel, MyModelAdmin)
Nice and concise. Grazie! –
concordato. Solo questo è un problema quando non voglio cambiare il codice. Quello che voglio dire è che ho un'app di base che voglio mantenere pulita dalle dipendenze su altre app. Mantengo queste dipendenze in un'app derivata dal progetto specifico. Ora voglio che l'interfaccia di amministrazione mostri solo l'app derivata, non l'app di base. Django richiede che l'app di base sia elencata nelle impostazioni/INSTALLED_APPS affinché l'app derivata funzioni. Ovviamente, l'app di base non dovrebbe mostrare, ma allo stesso tempo non voglio mantenerla inalterata e riutilizzabile. Vedi [here] ([se]/questions/13923968 /). – Sven
Un modo più breve: 'get_model_perms = lambda self, req: {}' –