首页  /  后端技术  /  Django  /  Django-admin管理工具使用(五)

Django-admin管理工具使用(五)

 作者:白驹    来源:原创    浏览:286    日期:2020年3月3日  

Django-admin管理工具使用(五)

django-admin如何处理过滤器数据过滤问题
在实际开发中我们可能需要将数据进行分类,我们可以通过django-admin内置的方法实现
完整代码如下。我们定义了一个CategoryKeywordFilter类,该类继承了admin的SimpleListFilter类。我们设置了过滤器的标题和参数名(keyword), 并通过lookups方法定义了过滤参数元组,并调用queryset方法返回符合查询条件的查询数据集。
from django.contrib import admin

class CategoryKeywordFilter(admin.SimpleListFilter):
    title = "标签"
    # 在url中显示的参数名,如?tid=xxx
    parameter_name = 'tid'

    def lookups(self, request, model_admin):
        """
        :param request: 当前请求
        :param model_admin: 继承自加入当前过滤器的管理模型
        :return:  (
            ('python','python文章'),
            ('js','js文章'),
        )
        """
        tags = tuple(
            [
                (item.id,item.name) for item in Tags.objects.all()
            ]
        )
        return tags

    def queryset(self, request, queryset):
        """
        调用self.value()获取url中的参数
        :param request: 当前请求
        :param queryset:当前数据查询结果集,可以用filter进行查询
        :return:
        """
        return queryset.filter(tags=self.value())



class ArticleAdmin(admin.ModelAdmin):
    list_filter = (CategoryKeywordFilter,)  # 过滤器

django-admin如何设置字段过滤

自定义需要筛选的参数元组.
自定义的Filter类的代码必需放在ModelAdmin类的前面,否则无法使用。
自定义的Filter参数名parameter_name不要使用q和next,这两个参数已作为django admin的默认参数使用了。
  • 评论
  • 相关评论