Лукап lte
Лукап lte (less than or equal) применяется в запросах
к базе данных для фильтрации записей, у которых значение
заданного поля меньше или равно указанному значению.
Этот оператор поиска используется в сочетании с методом
filter или exclude и указывается через
двойное подчеркивание после имени поля. Лукап работает
с числовыми полями, датами, временем и другими типами
данных, для которых определена операция сравнения.
Синтаксис
Model.objects.filter(field__lte=value)
Где field - имя поля модели, а value -
значение, с которым производится сравнение.
В результат попадают записи, у которых значение поля
меньше или равно value.
Пример
Рассмотрим модель Product с полем price.
Найдем товары с ценой не более 1000 рублей:
from myapp.models import Product
cheap_products = Product.objects.filter(price__lte=1000)
for product in cheap_products:
print(product.name)
Результат выполнения кода:
"Mouse"
"Keyboard"
"USB Hub"
Пример
Используем лукап lte с полем даты.
Найдем заказы, оформленные до 1 января 2025 года:
from myapp.models import Order
from datetime import date
old_orders = Order.objects.filter(created_at__date__lte=date(2025, 1, 1))
for order in old_orders:
print(order.id)
Результат выполнения кода:
1001
1002
1003
Пример
Лукап lte можно комбинировать с другими
условиями. Найдем товары с ценой от 500 до 1000 рублей:
from myapp.models import Product
products = Product.objects.filter(
price__gte=500,
price__lte=1000
)
for product in products:
print(f"{product.name}: {product.price}")
Результат выполнения кода:
"Keyboard: 800"
"Monitor: 1000"
Пример
Используем lte для фильтрации по связанным
моделям через отношения. Найдем категории, у которых
хотя бы один товар дешевле 500 рублей:
from myapp.models import Category
categories = Category.objects.filter(
product__price__lte=500
).distinct()
for category in categories:
print(category.name)
Результат выполнения кода:
"Electronics"
"Accessories"