РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
94 of 818 menu

Метод raw

Метод raw применяется к менеджеру модели и выполняет сырой SQL-запрос, возвращая экземпляр RawQuerySet, который ведет себя как обычный QuerySet. Это позволяет выполнять сложные запросы, которые невозможно выразить с помощью ORM. Первый аргумент - строка SQL-запроса, второй - список параметров для подстановки в запрос, третий - словарь параметров для подстановки по именам.

Синтаксис

Model.objects.raw(raw_query, params=None, translations=None)

Пример

Давайте выполним простой сырой запрос для получения всех статей из базы данных:

from myapp.models import Article raw_query = "SELECT * FROM myapp_article" res = Article.objects.raw(raw_query) for article in res: print(article.title)

Результат выполнения кода:

"article 1" "article 2" "article 3"

Пример

Давайте выполним запрос с параметрами, чтобы получить статьи по статусу:

from myapp.models import Article raw_query = "SELECT * FROM myapp_article WHERE status = %s" res = Article.objects.raw(raw_query, ['published']) for article in res: print(article.title)

Результат выполнения кода:

"article 1" "article 2"

Пример

Давайте используем именованные параметры для подстановки значений в запрос:

from myapp.models import Article raw_query = "SELECT * FROM myapp_article WHERE status = %(status)s" res = Article.objects.raw(raw_query, {'status': 'published'}) for article in res: print(article.title)

Результат выполнения кода:

"article 1" "article 2"

Смотрите также

  • метод filter,
    который фильтрует QuerySet с помощью ORM
  • метод extra,
    который добавляет дополнительные условия в SQL-запрос
  • метод values,
    который возвращает QuerySet словарей
  • метод only,
    который выбирает только указанные поля
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить