自定義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)

 實現的效果圖如下所示:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM