Удалить кнопку истории из админки Django
3 ответа
К сожалению, в Django нет простого способа переключения кнопки "История", как, например, для кнопки "Добавить". Самый простой способ - переписать файл change_form.html и удалить следующие строки из block object-tools-items
:
<li>
{% url opts|admin_urlname:'history' original.pk|admin_urlquote as history_url %}
<a href="{% add_preserved_filters history_url %}" class="historylink">{% trans "History" %}</a>
</li>
Имейте в виду, что вы должны указать change_form
для каждой модели администратора. Пример:
class TestAdmin(admin.ModelAdmin):
# path to the app_name/templates/admin/app_name/change_form.html
change_form_template = 'admin/app_name/change_form.html'
# Register your models here.
admin.site.register(Test, TestAdmin)
Чистым решением было бы переопределить change_form_object_tools.html
шаблон, который нужно разместить вtemplates/admin/
вашего проекта.
{% load i18n admin_urls %}
{% block object-tools-items %}
{% block comment %}
<li>
{% url opts|admin_urlname:'history' original.pk|admin_urlquote as history_url %}
<a href="{% add_preserved_filters history_url %}" class="historylink">
{% translate "History" %}</a>
</li>
{% endcomment %}
{% if has_absolute_url %}<li><a href="{{ absolute_url }}" class="viewsitelink">{% translate "View on site" %}</a></li>{% endif %}
{% endblock %}
Я знаю, что это старо. Я также сталкиваюсь с этой проблемой, и, судя по ответу @elsadek и комментарию @daigorocub, мне удается показать/скрыть кнопку/ссылку истории.
создайте шаблон администратора, чтобы переопределить шаблон администратора по умолчанию для каталога, который будетapp/templates/admin/
.
это моя внешность. он отличается от значения по умолчанию для django, поскольку я использую django-jazzmin для шаблона администратора, но процесс тот же.
{% load i18n admin_urls jazzmin %}
{% get_jazzmin_ui_tweaks as jazzmin_ui %}
{% block object-tools-items %}
{% url opts|admin_urlname:'history' original.pk|admin_urlquote as history_url %}
# Validate if the user is super user, if true, the history button is displayed, else, remove the history button.
{% if request.user.is_superuser %}
<a class="btn btn-block {{ jazzmin_ui.button_classes.secondary }} btn-sm" href="{% add_preserved_filters history_url %}">{% trans 'History' %}</a>
{% endif%}
{% if has_absolute_url %}
<a href="{{ absolute_url }}" class="btn btn-block {{ jazzmin_ui.button_classes.secondary }} btn-sm">{% trans "View on site" %}</a>
{% endif %}
{% endblock %}
для справки, это значение по умолчанию для django, которое можно найти в..\python3.11\site-packages\django\contrib\admin\templates\admin\
change_form_object_tools.html
{% load i18n admin_urls %}
{% block object-tools-items %}
<li>
{% url opts|admin_urlname:'history' original.pk|admin_urlquote as history_url %}
<a href="{% add_preserved_filters history_url %}" class="historylink">{% translate "History" %}</a>
</li>
{% if has_absolute_url %}<li><a href="{{ absolute_url }}" class="viewsitelink">{% translate "View on site" %}</a></li>{% endif %}
{% endblock %}