Based on x0nix’s answer I did some experiments. It seems like returning an empty dict from get_model_perms
excludes the model from index.html, whilst still allowing you to edit instances directly.
class MyModelAdmin(admin.ModelAdmin):
def get_model_perms(self, request):
"""
Return empty perms dict thus hiding the model from admin index.
"""
return {}
admin.site.register(MyModel, MyModelAdmin)