2016-09-30 2 views
-1

'Cities'라는 모델이 있고 admin 측에 도시 이름을 기준으로 모델을 필터링하는 'city_name'필터가 있다고 가정합니다. 기본적으로 django는 장고 관리 필터에서 하나의 도시 이름 만 선택할 수 있습니다. 하지만 장고 admin 필터에서 다중 도시 이름을 선택해야합니다. 어떻게 할 수 있습니까? ??다중 선택 장고 관리 필터가 가능합니까?

답변

1

당신은 여기 django.contrib.admin.SimpleListFilter

를 상속하여 장고 사용자 정의 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

을 문서 도구에 대한 참조가
관련 문제