2017-03-13 3 views
0

필자는 필터에 대한 django 문서를 읽고 객관식 필터를 발견했습니다.Django 다중 선택 필터 (범위 포함)

class User(models.Model): 
    username = models.CharField(max_length=255) 
    first_name = SubCharField(max_length=100) 
    last_name = SubSubCharField(max_length=100) 

    status = models.IntegerField(choices=STATUS_CHOICES, default=0) 

    STATUS_CHOICES = (
     (0, 'Regular'), 
     (1, 'Manager'), 
     (2, 'Admin'), 
    ) 

class F(FilterSet): 
    status = ChoiceFilter(choices=STATUS_CHOICES) 

    class Meta: 
     model = User 
     fields = ['status'] 

제 신청서에는 제품 모델의 가격을 나타내는 십진법 필드가 있습니다. 나는 가격 범위를 선택하기 위해 여러 선택 필터를 사용할 수있는 방법, 예를 들어이 있다면 나는 범위 필터의 알고하지만 난 여러 선택 필터의 기능을 필요로 할 수

(0-200, '$'), 
(201-500, '$$'), 
(501-1000, '$$$') 

, 궁금 해서요 여러 범위를 선택하십시오.

답변

0

여러 범위로 필터링하려고하기 때문에 여기에 확장 할 표준 동작이 없습니다. 가장 좋은 방법은 사용자 지정 동작을 제공하기 위해 객관식 필터에서 method 인수를 사용하는 것입니다.

class F(django_filters.FilterSet): 
    price = MultipleChoiceFilter(choices=(('$': '$', ...)), method='filter_price') 

    def filter_price(self, queryset, name, value): 
     # value should be a list since it's multiple choice 
     for price in value: 
      if price == '$': 
      ... 
     return ...