在我的Django管理员模型的列表过滤器中我有一个过滤器Category
,我想添加一个过滤器Sub-category
,其值取决于所选的Category
值
如何使用ModelAdmin.list_filter
实现此目的?
谢谢
答案 0 :(得分:4)
为子类别创建一个从SimpleListFilter开始的类。
在方法lookups
内,检查request.GET
内是否有匹配的Category
查询字符串,如果存在,请根据此过滤器创建一个查询集。
应该看起来像这样:(根据你的真实模型改变..可能有语法错误,我没有测试代码,但看起来应该非常相似)
class SubCategoryFilter(SimpleListFilter):
title = 'sub category'
parameter_name = 'sub_category'
def lookups(self, request, model_admin):
sub_categories = Category.objects;
if 'category' in request.GET:
sub_categories = sub_categories.filter(main_category=request.GET['category'])
return (
(sub_cat.pk,sub_cat.text) for sub_cat in sub_categories
)