Есть ли способ или пакет, с помощью которого мы можем выполнять фильтры (поиск) по пользовательским необработанным sql-запросам в django?

Я прочитал приведенный ниже документ : https://docs.djangoproject.com/en/3.2/topics/db/sql/

В модели доступно множество фильтров поиска, таких как field__gt, field__lt, field__range, field__contains

но я хочу использовать их в необработанном sql, например предположим

query = SELECT * от клиентов WHERE customers.name like '%name%' and age < 30 and status IN ('active','pending')

>>

Здесь:

  • customers.name like '%name%'
    имя будет вводиться пользователем, поэтому я хочу защитить его от sql-инъекций, а также отфильтровать с помощью оператора %
  • .
  • age < 30 30 будет пользовательским вводом, и я хочу выполнить < > = также
  • IN ('active','pending') хотим передать список строк с помощью оператора IN

существует ли какой-нибудь подходящий способ/пакет, с помощью которого мы можем запускать необработанный sql, предотвращая sql-инъекции, а также фильтровать данные, используя %, IN, <, >, = операторы.

Как насчет использования Django ORM? (Это было бы правильным способом)

Customer.objects.filter(name__contains=“name”, age__lt=30, status__in=[‘active’, ‘pending’])

При условии, что имена таблиц/столбцов и моделей/полей совпадают, это приведет к точному запросу, который вы ищете, со всей безопасностью, которую вы хотите. Если вам действительно нужно выполнить необработанный запрос, то @Rvector предоставил вам необходимую документацию.

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