Класс Min

Класс Min применяется в агрегациях и аннотациях QuerySet для нахождения минимального значения поля модели. Он принимает имя поля в качестве аргумента и возвращает наименьшее значение среди всех записей выборки. Класс можно использовать как самостоятельную агрегацию через метод aggregate или в комбинации с annotate для группировок. Поддерживает работу с числами, датами, временем и текстовыми полями.

Синтаксис

pythonfrom django.db.models import Min

# Агрегация по всей таблице
Model.objects.aggregate(Min('field_name'))

# Аннотация для каждой группы записей
Model.objects.values('group_field').annotate(Min('field_name'))

Пример

Найдем минимальную цену среди всех товаров в базе данных:

pythonfrom myapp.models import Product
from django.db.models import Min

res = Product.objects.aggregate(Min('price'))
print(res)

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

python{"price__min": 9.99}

Пример

Вычислим минимальную дату создания заказов для каждого статуса:

pythonfrom myapp.models import Order
from django.db.models import Min

res = Order.objects.values('status').annotate(Min('created_at'))
for item in res:
  print(f"{item['status']}: {item['created_at__min']}")

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

python"new: 2025-01-10 10:30:00"
"processing: 2025-02-15 14:20:00"
"shipped: 2025-03-01 09:00:00"

Пример

Получим минимальное значение с помощью комбинации с фильтром:

pythonfrom myapp.models import Product
from django.db.models import Min

res = Product.objects.filter(category='electronics').aggregate(Min('price'))
print(res)

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

python{"price__min": 149.99}

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

  • класс Max,
    который вычисляет максимальное значение поля
  • класс Sum,
    который вычисляет сумму значений поля
  • класс Avg,
    который вычисляет среднее значение поля
  • класс Count,
    который подсчитывает количество записей