Как модифицировать шаблон в Django, не затрагивая верстки по умолчанию?
У ModelAdmin есть свойство change_form_template . Укажите в нем файл шаблона для модели
1) Как это исчезает? В отнаследованном шаблоне всё остаётся как и есть в шаблоне-предке.
Т.е., если создать шаблон в проекте, и написать в нём лишь{% extends 'admin/base_site.html' %}
то это будет, по сути, тот же самый шаблон.
Приведу пример из своего проекта, по нему вы сможете сориентироваться. Можно переопределять блоки, расширяя их (добавляя то, что нужно), или даже убирая контент из них.Пример шаблона{% extends 'admin/base_site.html' %}

{% load js_storage %}
{% load admin_static %}
{% load i18n %}
{% load pipeline %}


{% block extrastyle %}
    {{ block.super }}
    {% stylesheet 'Jcrop' %}
    {% stylesheet 'admin-core' %}
{% endblock %}

{% block extrahead %}
    {{ block.super }}
    {% js_storage_out %}
{% endblock %}

{# Из заголовка удалили конкретную для страницы крошку, оставив только site_title #}
{% block title %}{{ site_title|default:_('Django site admin') }}{% endblock %}

{# Добавили логотип #}
{% block branding %}
    <img src="{% static "images/logo_50.png" %}" class="logo" />
    {{ block.super }}
{% endblock %}

{# Убрали приветствие пользователя #}
{% block welcome-msg %}
{% endblock %}

{# Убрали ссылку View Site #}
{% block userlinks %}
    {% if user.is_active and user.is_staff %}
        {% url 'django-admindocs-docroot' as docsroot %}
        {% if docsroot %}
            <a href="{{ docsroot }}">{% trans 'Documentation' %}</a> /
        {% endif %}
    {% endif %}
    {% if user.has_usable_password %}
    <a href="{% url 'admin:password_change' %}">{% trans 'Change password' %}</a> /
    {% endif %}
    <a href="{% url 'admin:logout' %}">{% trans 'Log out' %}</a>
{% endblock %}

{% block footer %}
    {{ block.super }}
    {% javascript 'jquery-mousewheel' %}
    {% javascript 'js-cookie' %}
    {% javascript 'Jcrop' %}
    {% javascript 'plupload' %}
    {% javascript 'admin-core' %}
{% endblock %}
2) Кастомизировать шаблоны админки для конкретной модели можно, переопределяя их в папке шаблонов проекта. Например, если у меня есть приложение users, в нём есть модель user, и для неё мне нужно кастомизировать шаблон списка объектов, то я создаю файл templates/admin/users/user/change_list.html и делаю там, что мне нужноПример переопределения шаблона админки для модели{% extends 'admin/change_list.html' %}

{% block extrahead %}
    {{ block.super }}
    <script type="text/javascript">
        var url = js_storage.url_users_user_show_user_password;
        (function($) {
            $(document).ready(function($) {
                $('#result_list td.field-rawpassword').click(function(event){
                    var $target = $(event.currentTarget);
                    var user_id = $target.closest('tr').find('td.action-checkbox input[type=checkbox]').val()
                    if(!$target.data('shown')){
                        $.get(url, {user_id: user_id}, function(data, status, xhr){
                            $target.html('<span style="font-family: Monospace">' + data.raw_password + '</span>');
                            $target.data('shown', true);
                        });
                    }
                });
            });
        })(django.jQuery);
    </script>
{% endblock %}