Django Rest Framework sql строка запроса - PullRequest
0 голосов
/ 12 марта 2020

Я знаю, очень ли легко добавить API-фильтрацию к API остальных в Django.

/api?name=joseph&age=5. # I already have that

однако я использую пакет реагирования для генерации запроса, и он генерирует строку SQL, например:

"name = 'joseph' AND age = 5"

Интересно, что было бы самым простым способом отфильтруйте таблицу с помощью SQL -строки. Запрос может быть вложен с ИЛИ и И и НЕ. Пожалуйста, помогите ..

1 Ответ

1 голос
/ 12 марта 2020

Выполнение необработанных sql запросов в django очень просто с точки зрения того, как вы будете выполнять.
Просто вам нужно добавить raw в ваш набор запросов и выполнить построение модели.


Ниже приведен фрагмент кода для вашей справки

>>> Person.objects.raw('SELECT id, first_name, last_name, birth_date FROM myapp_person')
...
>>> Person.objects.raw('SELECT last_name, birth_date, first_name, id FROM myapp_person')
... 

Пример согласно вашему требованию:

name = 'joseph'
age = 5
sqlQuery = "SELECT * from <DBNAME> where name = "+name+" AND age = "+age
result = Person.objects.raw(sqlQuery)

# use of OR operator
name = 'joseph'
age = 5
result = Person.objects.filter(name=name) | Person.objects.filter(age=age) 

## use of AND operator
name = 'joseph'
age = 5
result = Person.objects.filter(name=name).filter(age=age) 

Вы можете прочитать здесь больше

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...