在我的 Django 管理员模型的列表过滤器中,我有一个过滤器Category
,我想添加一个过滤器Sub-category
,其值取决于所选Category
值。
我怎样才能做到这一点ModelAdmin.list_filter
?
谢谢
为 Sub-Category创建一个继承自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
)