• 自定义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)

     实现的效果图如下所示:

  • 相关阅读:
    05391
    05390
    05389
    05388
    1006 Sign In and Sign Out (25分)
    1002 A+B for Polynomials (25分)
    1005 Spell It Right (20分)
    1003 Emergency (25分)
    1001 A+B Format (20分)
    HDU 2962 Trucking
  • 原文地址:https://www.cnblogs.com/hanxiaomeng/p/12554152.html
Copyright © 2020-2023  润新知