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

Лукап gt

Лукап gt (greater than) применяется в запросах Django ORM для выборки объектов, у которых значение указанного поля строго больше переданного значения. Он используется внутри метода filter, exclude или других методов, принимающих условия фильтрации. Лукап позволяет создавать гибкие условия сравнения для различных типов полей, включая числа, даты и время.

Синтаксис

Model.objects.filter(field__gt=value)

Где field - имя поля модели, а value - значение, с которым происходит сравнение. Результатом выполнения запроса будет QuerySet, содержащий объекты, у которых значение поля больше value.

Пример . Для числовых полей

Допустим, у нас есть модель Product с полем price. Найдем все товары с ценой больше 1000:

from myapp.models import Product res = Product.objects.filter(price__gt=1000) for product in res: print(product.name, product.price)

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

"Laptop 1500" "Smartphone 1200" "Tablet 1100"

Пример . Для полей с датой

Найдем все заказы, сделанные после определенной даты. Модель Order содержит поле created_at типа DateTimeField:

from myapp.models import Order from datetime import datetime date_from = datetime(2025, 1, 1) res = Order.objects.filter(created_at__gt=date_from) for order in res: print(order.id, order.created_at)

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

"1 2025-01-15 10:30:00" "3 2025-02-01 14:20:00" "5 2025-03-10 09:15:00"

Пример . Использование с цепочкой фильтров

Лукап gt можно комбинировать с другими условиями для уточнения запроса. Найдем товары с ценой больше 500 и количеством больше 10:

from myapp.models import Product res = Product.objects.filter(price__gt=500, quantity__gt=10) for product in res: print(product.name, product.price, product.quantity)

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

"Laptop 1500 25" "Tablet 1100 15"

Пример . Использование с объектом F

Лукап gt может использоваться для сравнения значения поля с другим полем той же модели с помощью выражения F. Найдем товары, у которых цена больше скидки:

from myapp.models import Product from django.db.models import F res = Product.objects.filter(price__gt=F('discount')) for product in res: print(product.name, product.price, product.discount)

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

"Laptop 1500 100" "Smartphone 1200 50"

Пример . Использование с агрегацией

Лукап gt можно применять с аннотированными полями для фильтрации по вычисляемым значениям. Найдем товары, у которых средний рейтинг больше 4:

from myapp.models import Product, Review from django.db.models import Avg res = Product.objects.annotate( avg_rating=Avg('review__rating') ).filter(avg_rating__gt=4) for product in res: print(product.name, product.avg_rating)

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

"Laptop 4.5" "Smartphone 4.2"

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

  • лукап gte,
    который проверяет, что значение поля больше или равно указанному
  • лукап lt,
    который проверяет, что значение поля меньше указанного
  • лукап lte,
    который проверяет, что значение поля меньше или равно указанному
  • метод filter,
    который выполняет фильтрацию QuerySet
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить