模型類為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)
實現的效果圖如下所示: