zoukankan      html  css  js  c++  java
  • 自定义Django admin(后台管理模块)的Filter过滤器

    模型类为Hero,需求为在Admin中实现Hero类以gender字段进行过滤。

    admin.py中的代码如下:

    from django.contrib import admin
    from .models import Hero
    
    @admin.register(Hero) #注册模型类Hero
    class HeroAdmin(admin.ModelAdmin):
        '''管理Hero表在admin模块中的设置'''
        list_display = ('id', 'name, 'age', 'gender')
        search_fields = ('id', 'name')
        
        class GenderFilter(admin.SimpleListFilter):
            title = '英雄性别' #过滤标题显示为"以 英雄性别"
            parameter_name = 'gender' #过滤器使用的过滤字段
        
            def lookups(self, request, model_admin):
                '''针对字段值设置过滤器的显示效果'''
                return (
                    (True, 女),
                    (False, 男),
                )
            
            def queryset(self, request, queryset):
                '''定义过滤器的过滤动作'''
                if self.value() == True:
                    return self.model().objects.filter(gender=True).all()
                elif self.value() == False:
                    return self.model().objects.filter(gender=False).all()
        
        list_filter = (GenderFilter)

     实现的效果图如下所示:

  • 相关阅读:
    d3-tree 双向树
    .gitignore
    url正则匹配
    this 指向
    git 用法小总结
    心态崩了?
    内存溢出和内存泄漏的区别
    jQuery添加方法
    物理像素与逻辑像素
    服务器返回的status
  • 原文地址:https://www.cnblogs.com/hanxiaomeng/p/12554152.html
Copyright © 2011-2022 走看看