1

在我的 Django 管理员模型的列表过滤器中,我有一个过滤器Category,我想添加一个过滤器Sub-category,其值取决于所选Category值。

我怎样才能做到这一点ModelAdmin.list_filter

谢谢

4

1 回答 1

4

为 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
        )
于 2013-01-29T12:33:47.987 回答