Поиск с 2 полями в общем представлении api

Знаете ли вы, как я могу искать по 2 полям с условиями 'и'?
То есть в приведенном ниже коде мне нужно искать в поле 'search_fields' название символа и таймфрейм, (оба условия вместе, а не только одно из них)


class RegisterSymbolViewSet(mixins.ListModelMixin, viewsets.GenericViewSet):
    serializer_class = SymbolValidationSerializer
    filter_backends = [filters.SearchFilter]
    search_fields = ['^symbol','^time_frame']
    queryset = RegisterSymbol.objects.all()

Во-первых, в документации DRF говорится, что только текстовые поля могут быть использованы в качестве поля поиска, поэтому если таймфрейм является DateField, он, скорее всего, не будет работать.

The SearchFilter class will only be applied if the view has a 
search_fields attribute set. The search_fields attribute should 
be a list of names of text type fields on the model, 
such as CharField or TextField.

Вы можете попробовать создать собственный класс SearchFilter и переопределить метод filter_queryset, чтобы использовать and вместо оператора or.

См. исходный код DRF https://github.com/encode/django-rest-framework/blob/86673a337a4fe8861c090b4532379b97e3921fef/rest_framework/filters.py#L123

Вернуться на верх