QuerySet API

class autodealer.queryset.DoesNotExist[исходный код]

Базовые классы: Exception

Объект не найден. Выбрасывается из QuerySet.get().

class autodealer.queryset.MultipleObjectsReturned[исходный код]

Базовые классы: Exception

Найдено более одного объекта. Выбрасывается из QuerySet.get().

class autodealer.queryset.QuerySet(model: type[T])[исходный код]

Базовые классы: Generic[T]

Цепочечный построитель запросов, аналогичный Django QuerySet.

Не выполняет SQL до вызова терминального метода (all(), first(), last(), count(), get(), exists(), values()).

Не создавать напрямую — использовать Model.objects.

Example:

# Все активные банки, отсортированные по имени
banks = Bank.objects.filter(hidden=0).order_by('name').all()

# Один объект или исключение
bank = Bank.objects.get(bank_id=1)

# Проверка существования
if Bank.objects.filter(name__icontains='сбер').exists():
    ...
filter(**kwargs: Any) QuerySet[T][исходный код]

Добавить условия фильтрации (WHERE).

Поддерживаются лукапы через __: exact, iexact, contains, icontains, startswith, endswith, gt, gte, lt, lte, in, isnull.

Параметры:

**kwargs – Условия вида field=value или field__lookup=value.

Результат:

Новый QuerySet с добавленными условиями.

Example:

Bank.objects.filter(hidden=0, name__icontains='сбер')
exclude(**kwargs: Any) QuerySet[T][исходный код]

Исключить записи, соответствующие условиям (WHERE NOT).

Параметры:

**kwargs – Условия вида field=value или field__lookup=value.

Результат:

Новый QuerySet.

order_by(*fields: str) QuerySet[T][исходный код]

Задать сортировку.

Префикс - означает сортировку по убыванию.

Параметры:

*fields – Имена полей. '-name' — DESC, 'name' — ASC.

Результат:

Новый QuerySet.

Example:

Bank.objects.order_by('-bank_id', 'name')
limit(n: int) QuerySet[T][исходный код]

Ограничить количество результатов (LIMIT).

Параметры:

n – Максимальное число записей.

Результат:

Новый QuerySet.

offset(n: int) QuerySet[T][исходный код]

Пропустить первые n записей (OFFSET).

Параметры:

n – Число пропускаемых записей.

Результат:

Новый QuerySet.

all() list[T][исходный код]

Выполнить запрос и вернуть все результаты.

Результат:

Список экземпляров модели (detached от сессии).

first() T | None[исходный код]

Вернуть первую запись или None.

Результат:

Экземпляр модели или None.

last() T | None[исходный код]

Вернуть последнюю запись или None.

Результат:

Экземпляр модели или None.

get(**kwargs: Any) T[исходный код]

Вернуть ровно одну запись.

Параметры:

**kwargs – Дополнительные условия (как в filter()).

Результат:

Экземпляр модели.

Исключение:

Example:

bank = Bank.objects.get(bank_id=1)
count() int[исходный код]

Вернуть количество записей (SELECT COUNT(*)).

Результат:

Целое число.

exists() bool[исходный код]

Проверить, есть ли хотя бы одна запись.

Результат:

True если записи существуют.

values(*fields: str) list[dict][исходный код]

Вернуть список словарей вместо экземпляров модели.

Параметры:

*fields – Имена полей. Если не переданы — все колонки.

Результат:

Список dict.

Example:

Bank.objects.filter(hidden=0).values('bank_id', 'name')
# [{'bank_id': 1, 'name': 'Сбербанк'}, ...]
create(**kwargs: Any) T[исходный код]

Создать и сохранить новую запись.

Параметры:

**kwargs – Значения полей новой записи.

Результат:

Сохранённый экземпляр модели (атрибуты доступны после коммита).

Example:

bank = Bank.objects.create(name='Тинькофф', bik='044525974')
update(**kwargs: Any) int[исходный код]

Массово обновить записи, соответствующие фильтрам.

Параметры:

**kwargs – Поля и новые значения.

Результат:

Количество изменённых строк.

Example:

Bank.objects.filter(hidden=1).update(hidden=0)
delete() int[исходный код]

Массово удалить записи, соответствующие фильтрам.

Результат:

Количество удалённых строк.

Example:

Bank.objects.filter(hidden=1).delete()
class autodealer.queryset.Manager[исходный код]

Базовые классы: object

Descriptor that provides Django-like Model.objects access.

Attach to a class with:

class MyModel(Base):
    objects = Manager()

Таблица лукапов

Лукап

SQL

field=value / field__exact=value

field = value

field__iexact=value

field ILIKE value

field__contains="текст"

field LIKE '%текст%'

field__icontains="текст"

field ILIKE '%текст%'

field__startswith="А"

field LIKE 'А%'

field__endswith="ов"

field LIKE '%ов'

field__gt=5

field > 5

field__gte=5

field >= 5

field__lt=5

field < 5

field__lte=5

field <= 5

field__in=[1,2,3]

field IN (1, 2, 3)

field__isnull=True

field IS NULL

field__isnull=False

field IS NOT NULL