2016-09-30 79 views
-1

假設如果有一個名爲'Cities'的模型,並且在管理員端有一個過濾器'city_name'來根據城市名稱過濾模型。 默認情況下,django只允許從django管理過濾器中選擇一個城市名稱。 但是我需要在django管理過濾器中選擇多個城市名稱。我該怎麼做。?是多選擇django管理員可能過濾..?

回答

1

您可以通過繼承django.contrib.admin.SimpleListFilter

這裏使用Django定製list_filter是一個簡單的例子:

from django.contrib import admin 

class MultiSelectFilter(admin.SimpleListFilter): 
    # Filter title 
    title = 'Cities' 

    # model field 
    parameter_name = 'city_name' 

    def lookups(self, request, model_admin): 
     # you can modify this part, this is less DRY approach. 
     # P.S. assuming city_name is lowercase CharField 
     return (
      ('city1,city2,city3', 'City1 or City2 or City3'), 
      ('city4,city5,city6', 'City3 or City4 or City6'), 
     ) 

    def queryset(self, request, queryset): 

     if self.value() in ('city1,city2,city3', 'city4,city5,city6'): 
      # filter if a choice selected 
      return queryset.filter(city_name__in=self.value().split(',')) 
     # default for no filtering 
     return queryset 

你有一個參考到Google文檔here