На уровне корневой страницы администраторского сайта, где зарегистрированные модели появляются, я хочу скрыть несколько моделей, которые регистрируются администратору Django.
Если я непосредственно нерегистрирую их, я не могу добавить новые записи как добавление нового символа "+" dissapears.
Как это может быть сделано?
Уродливое решение: переопределить шаблон индекса администратора, т.е. скопировать index.html из django в ваш /admin/index.html и добавьте что-то вроде этого:
{% for for model in app.models %}
{% ifnotequal model.name "NameOfModelToHide" %}
...
У меня та же проблема, вот что я придумал.
Как и в предыдущем решении - скопируйте index.html из django в свой /admin/index.html и измените его следующим образом:
{% for model in app.models %}
{% if not model.perms.list_hide %}
<tr>
...
</tr>
{% endif %}
{% endfor %}
И создайте подкласс ModelAdmin:
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
Теперь любая модель, зарегистрированная в подклассе HiddenModelAdmin, не будет отображаться в списке админки, но будет доступна через символ "плюс" подробнее:
class MyModelAdmin(HiddenModelAdmin):
...
admin.site.register(MyModel, MyModelAdmin)
В Django 1.2 добавлены новые операторы if, что означает, что желаемая функция может быть получена только путем перезаписи admin / index.html
{% if model.name not in "Name of hidden model; Name of other hidden model" %}
...
{% endif %}
. Это плохое решение, потому что оно не заботится о многоязычные админы. Конечно, вы можете добавить названия моделей на всех поддерживаемых языках. Это хорошее решение, потому что оно не перезаписывает более одного аспекта основных функций Django.
Но прежде чем что-либо менять, я думаю, люди должны подумать об этом ...
По сути, проблема связана с тем, что у вас есть модели, которые нельзя использовать больше, чем добавление опции в раскрывающийся список один раз в пока. Это можно эффективно обойти, создав набор разрешений для «не очень продвинутых» пользователей, которые паникуют, когда моделей слишком много. Если требуются изменения в конкретных моделях, можно просто войти в систему с «расширенной учетной записью».