Создание пользовательской функции фильтрации для поддержки сложных запросов для Django

Фильтрация API должна позволять использовать круглые скобки для определения операций приоритета и использовать любую комбинацию доступных полей. Поддерживаемые операции включают or, and, eq (равно), ne (не равно), gt (больше чем), lt (меньше, чем). Пример -> "(date eq 2016-05-01) AND ((distance gt 20) OR (distance lt 10))". Пример 2 -> "distance lt 10". Интерфейс должен выглядеть следующим образом: def parse_search_phrase(allowed_fields, phrase): ... return Q(...) чтобы я мог использовать его следующим образом: search_filter = parse_search_phrase(allowed_fields, search_phrase) queryset = MyModel.objects.filter(search_filter)

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