Как фильтровать по статусу в Django Rest Framework с помощью квадратных скобок в параметрах запроса
Я столкнулся с проблемой фильтрации модели по статусу в Django Rest Framework. Вот моя текущая настройка:
Когда я фильтрую с помощью status=1,14, он работает отлично:
class DepartmentFilter(filters.FilterSet):
    search = filters.CharFilter(method='filter_search')
    status = filters.CharFilter(method='filter_status')
    class Meta:
        model = Department
        fields = ['search', 'status']
    def filter_search(self, queryset, name, value):
        print("filter_search", value)
        return queryset.filter(Q(token__icontains=value))
    
    def filter_status(self, queryset, name, value):
        print("filter_status", value)  # Verificar que el filtre s'executa
        if value:
            status_values = value.split(',')
            return queryset.filter(status__id__in=status_values)
        return queryset
    
Однако у меня возникают проблемы с перехватом параметра запроса, когда я использую status[]=1,14.
Я безуспешно пытался сделать следующее:
status = filters.CharFilter(method='filter_status[]')
status = filters.CharFilter(method='filter_status%5B%5D')
Похоже, нет способа создать функцию, которая бы это фиксировала.
Разрешение status[] - это первый шаг, потому что в конечном итоге я хочу работать с вызовом filters[status][] = 1,14. Я не нашел способа справиться с этим.
Может ли кто-нибудь подсказать?
Спасибо!
Нужно изменить не метод, а имя "источника", поэтому:
class DepartmentFilter(filters.FilterSet):
    search = filters.CharFilter(method='filter_search')
    status = filters.CharFilter(method='filter_status', field_name='status[]')
    class Meta:
        model = Department
        fields = ['search', 'status']
    def filter_search(self, queryset, name, value):
        return queryset.filter(Q(token__icontains=value))
    def filter_status(self, queryset, name, value):
        if value:
            status_values = value.split(',')
            return queryset.filter(status__id__in=status_values)
        return queryset
 При этом добавление [] к имени поля - это пережиток PHP, в (большинстве) приложений Django это  не используется.