def filter_average_tannin(self, queryset, name, value):
     min, max = get_slice_min_max(value)
     if min is None:
         return queryset.annotate(avg_tannin=Avg('reviews__tannin')).filter(avg_tannin__lte=max)
     elif max is None:
         return queryset.annotate(avg_tannin=Avg('reviews__tannin')).filter(avg_tannin__gte=min)
     else:
         return queryset.annotate(avg_tannin=Avg('reviews__tannin')).filter(avg_tannin__range=(min, max))
 def filter_nr_grape_varieties(self, queryset, name, value):
     min, max = get_slice_min_max(value)
     if min is None:
         return queryset.annotate(nr_grapes=Count('wine__grapes')).filter(nr_grapes__lte=max)
     elif max is None:
         return queryset.annotate(nr_grapes=Count('wine__grapes')).filter(nr_grapes__gte=min)
     else:
         return queryset.annotate(nr_grapes=Count('wine__grapes')).filter(nr_grapes__range=(min, max))
 def filter_nr_reviews(self, queryset, name, value):
     min, max = get_slice_min_max(value)
     if min is None:
         return queryset.annotate(nr_reviews=Count('reviews')).filter(nr_reviews__lte=max)
     elif max is None:
         return queryset.annotate(nr_reviews=Count('reviews')).filter(nr_reviews__gte=min)
     else:
         return queryset.annotate(nr_reviews=Count('reviews')).filter(nr_reviews__range=(min, max))
 def filter_alcohol_content(self, queryset, name, value):
     print("filter_alcohol_content", queryset)
     min, max = get_slice_min_max(value)
     if min is None:
         return queryset.filter(alcohol_content__lte=max)
     elif max is None:
         return queryset.filter(alcohol_content__gte=min)
     else:
         return queryset.filter(alcohol_content__range=(min, max))
 def filter_average_score(self, queryset, name, value):
     # The value parameter that is passed by RangeFilter is a slice object
     # https://stackoverflow.com/a/36459896
     min, max = get_slice_min_max(value)
     if min is None:
         return queryset.annotate(avg_score=Avg('reviews__score')).filter(avg_score__lte=max)
     elif max is None:
         return queryset.annotate(avg_score=Avg('reviews__score')).filter(avg_score__gte=min)
     else:
         return queryset.annotate(avg_score=Avg('reviews__score')).filter(avg_score__range=(min, max))