Как написать запрос в Django ORM для ..... WHERE substring(field1, 1, 2) in ('AB', 'BC')?
Как написать фильтр Django ORM для следующего запроса.
SELECT field1, field2, field3 FROM table1 WHERE substring(field1, 1, 2) in ('AB', 'BC')
Я хочу написать запрос, используя
Model1.objects.filter(.....)
Я думаю, что sql запрос объясняет сам себя, мне не нужно давать больше контекста.
Существует ли причина, по которой вы не можете использовать необработанные SQL-запросы с помощью функции raw()?
Что-то вроде:
Model1.objects.raw('SELECT field1, field2, field3 FROM table1 WHERE substring(field1, 1, 2) in ('AB', 'BC')')
Задокументировано здесь: https://docs.djangoproject.com/en/4.0/topics/db/sql/#executing-custom-sql-directly
Это можно легко сделать с помощью django ORM, комбинируя only
, filter
и Q
выражения :
from django.db.models import Q
Model1.objects.only('field1', 'field2', 'field3').filter(Q(field1__startswith='AB') | Q(field1__startswith='BC'))