Я хочу overide Джанго по умолчанию шаблон админ фильтр использовать свой собственный шаблон на основе этого:Overide Джанго администратора шаблоны ListFilter
https://github.com/feincms/feincms/blob/master/feincms/templates/admin/filter.html
Я написал свой собственный SimpleListFilter
класс, наследующий django.contrib.admin.SimpleListFilter
class PublisherStateFilter(admin.SimpleListFilter):
title = _('Status')
parameter_name = 'status'
template = 'admin/blogitty/filter.html'
[...]
Это прекрасно работает.
Однако я хотел бы использовать тот же шаблон для всех администраторов фильтров. Есть ли способ обойти все шаблоны фильтров для данного приложения, без необходимости определять пользовательские ListFilter
для каждого отношения ForeignKey
и ManyToMany
.
С моим проектом как blogitty
. Я попробовал оба варианта шаблона DIR:
blogitty/templates/admin/filter.html
И:
blogitty/templates/admin/blogitty/filter.html
Не повезло :-(
Просматривая исходный код:
https://github.com/django/django/blob/master/django/contrib/admin/options.py#L1030
return TemplateResponse(request, form_template or [
"admin/%s/%s/change_form.html" % (app_label, opts.model_name),
"admin/%s/change_form.html" % app_label,
"admin/change_form.html"
], context)
https://github.com/django/django/blob/master/django/contrib/admin/options.py#L1569
return TemplateResponse(request, self.change_list_template or [
'admin/%s/%s/change_list.html' % (app_label, opts.model_name),
'admin/%s/change_list.html' % app_label,
'admin/change_list.html'
], context)
Насколько я понимаю. Django ModelAdmin проверяет несколько путей для рендеринга changeform или changelist для данной модели. Однако для ListFilter
никаких дополнительных проверок для загрузки пользовательских шаблонов не производится.
https://github.com/django/django/blob/master/django/contrib/admin/filters.py#L60
class ListFilter(object):
title = None
template = 'admin/filter.html'
Update - Настройки TEMPLATE_DIRS:
BASE_DIR = dirname(dirname(__file__))
TEMPLATE_DIRS = (
join(BASE_DIR, 'templates'),
)
макет проекта основан на cookiecutter-django Даниэль Гринфельд