Для написания гибкой фильтрации на Python мы можем использовать фреймворк Django, который обеспечивает множество инструментов и функций для работы с базами данных и управления данными.
В Django фильтрация осуществляется с помощью объектов QuerySet, которые представляют собой "набор" объектов моделей, полученных из базы данных с применением определенных условий.
Для начала создадим модель, данных которой мы будем фильтровать. Например, пусть у нас будет модель "Product" с полями "name", "category" и "price".
from django.db import models class Product(models.Model): name = models.CharField(max_length=100) category = models.ForeignKey(Category, on_delete=models.CASCADE) price = models.DecimalField(max_digits=10, decimal_places=2)
После создания модели мы можем выполнять фильтрацию на основе ее полей. Например, давайте выберем все товары с ценой больше 1000:
products = Product.objects.filter(price__gt=1000)
Здесь метод filter()
принимает аргументы в виде имен полей модели и операторов сравнения, например gt
(greater than), lt
(less than), gte
(greater than or equal to), lte
(less than or equal to) и другие.
Также мы можем использовать оператор "или" (|
) и оператор "и" (&
) для составления более сложных фильтров:
products = Product.objects.filter(category='furniture', price__lt=2000)
Кроме того, Django предоставляет возможность выполнять фильтрацию на основе связей между моделями. Например, давайте выберем все товары, относящиеся к категориям "мебель" и "электроника":
products = Product.objects.filter(category__in=['furniture', 'electronics'])
Здесь используется оператор __in
, который позволяет указать несколько значений, в которые должно попадать поле модели.
Кроме того, Django также позволяет использовать операторы для выполнения строкового поиска (contains
, icontains
), проверки наличия значений (isnull
), фильтрации по датам (date
, year
, month
, day
), а также дополнительные функции (annotate
, order_by
, distinct
) для более сложной фильтрации.
Это лишь некоторые из возможностей, предоставляемых Django для гибкой фильтрации данных. Фреймворк обеспечивает множество других функций и инструментов, которые могут быть полезными в вашей разработке.