gpt4 book ai didi

django - 覆盖 django admin List_Filter 模板

转载 作者:行者123 更新时间:2023-12-02 09:54:33 28 4
gpt4 key购买 nike

我想覆盖默认的 django 管理过滤器模板以使用我自己的模板:

https://github.com/feincms/feincms/blob/master/feincms/templates/admin/filter.html

我通过继承django.contrib.admin.SimpleListFilter编写了自己的SimpleListFilter

class PublisherStateFilter(admin.SimpleListFilter):
title = _('Status')
parameter_name = 'status'
template = 'admin/blogitty/filter.html'

[...]

这非常有效。

Dropdown Select Filter

但是我想对所有管理过滤器使用相同的模板。有没有办法覆盖给定应用程序的所有过滤器模板,而无需为每个 ForeignKeyManyToMany 关系定义自定义 ListFilter。 p>

我的项目为 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 检查多个路径以呈现给定模型的变更表或变更列表。但是,对于 ListFilter,不会执行额外的检查来加载自定义模板。

https://github.com/django/django/blob/master/django/contrib/admin/filters.py#L60

class ListFilter(object):
title = None
template = 'admin/filter.html'

更新 — TEMPLATE_DIRS 设置:

BASE_DIR = dirname(dirname(__file__))    

TEMPLATE_DIRS = (
join(BASE_DIR, 'templates'),
)

项目布局基于cookiecutter-django作者:丹尼尔·格林菲尔德

最佳答案

这可能有帮助

class ClassFilter1(admin.ModelAdmin):
title = 'Filter Class'
parameter_name = 'filter-class'

def lookups(self, request, model_admin):
# Your Lookups

def queryset(self, request, queryset):
# Your Lookups

class FilterClass(admin.ModelAdmin):
list_filter = (ClassFilter1, ClassFilter2)
change_list_template = 'polls/change_list_template.html'

并覆盖 change_list_template.html 并将 .html 放入 polls/templates/polls

关于django - 覆盖 django admin List_Filter 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28015993/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com