2016-09-30 10 views
-1

「Cities」というモデルがあり、admin側に市の名前に基づいてモデルをフィルタリングするフィルタ 'city_name'があるとします。 デフォルトでは、django管理フィルタから都市名を1つだけ選択できます。 しかし、私はdjango adminフィルタで複数​​の都市名を選択する必要があります。複数選択の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 

あなたはドキュメントhere

への参照を持っています
関連する問題