自定義Django admin(後臺管理模組)的Filter過濾器
阿新 • • 發佈:2021-06-11
模型類為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)