我想在Django管理员中显示特定的列表过滤器,只有当某个条件匹配时。例如,我现在有3个过滤器:country
、state
、city
。所有这3个被显示在同一时间产生一个真正的混乱和一个非常长的侧边栏,因为它结合了一长串的城市,州和国家。
我想做的是只显示国家第一,当一个国家被点击,我想显示在该国的国家和城市过滤器相同。这是默认情况下可行的,还是我必须自己创建一个自定义过滤器?
list_filter = (
('loc_country_code', custom_titled_filter( 'country' )),
('loc_state', custom_titled_filter( 'state' )),
('loc_city', custom_titled_filter( 'city' )),
)
1条答案
按热度按时间ewm0tg9j1#
您可以创建一个自定义
SimpleListFilter
来在您的管理上生成动态过滤器。在SimpleListFilter
中,如果lookups
方法返回一个空的元组/列表,则过滤器被禁用(也从视图中隐藏)。这可用于控制某些过滤器何时出现。这里有一个基本的过滤器:
下面是一个过滤器,其中选项基于上面的过滤器受到限制:
一般的想法是在过滤器类上使用
lookups
来限制后续过滤器上的选项。这些过滤器可以通过list_filter
参数应用于管理员。