В Odoo 15 фильтрация данных на основе определенных диапазонов дат является общим требованием для многих компаний. Одним из таких сценариев является фильтрация записей за текущий месяц и предстоящий месяц. В этом сообщении блога мы рассмотрим несколько методов реализации этой функции фильтрации в Odoo 15, а также приведем примеры кода для каждого подхода.
-
Метод 1: использование фильтрации доменов
from datetime import date, timedelta from odoo import models class YourModel(models.Model): _inherit = 'your.model' def get_current_and_upcoming_month_records(self): today = date.today() first_day_of_current_month = today.replace(day=1) first_day_of_next_month = first_day_of_current_month.replace(month=first_day_of_current_month.month + 1, day=1) domain = [('your_date_field', '>=', first_day_of_current_month), ('your_date_field', '<', first_day_of_next_month)] records = self.search(domain) return records
-
Метод 2: использование SQL-запросов
from odoo import models, tools class YourModel(models.Model): _inherit = 'your.model' def get_current_and_upcoming_month_records(self): query = """ SELECT * FROM your_model WHERE your_date_field >= date_trunc('month', NOW()) AND your_date_field < date_trunc('month', NOW()) + INTERVAL '2 month' """ self._cr.execute(query) records = self._cr.dictfetchall() return records
-
Метод 3: использование модуля date_utils Odoo
from odoo import models, fields from odoo.fields import date_utils class YourModel(models.Model): _inherit = 'your.model' your_date_field = fields.Date() def get_current_and_upcoming_month_records(self): today = fields.Date.today() first_day_of_current_month = date_utils.start_of(today, 'month') first_day_of_next_month = date_utils.start_of(today + relativedelta(months=1), 'month') records = self.search([ ('your_date_field', '>=', first_day_of_current_month), ('your_date_field', '<', first_day_of_next_month) ]) return records
Фильтрацию записей в Odoo 15 на основе текущего месяца и предстоящего месяца можно выполнить различными методами. В этой статье мы рассмотрели три различных подхода: использование фильтрации доменов, выполнение SQL-запросов и использование модуля date_utils Odoo. Эти методы обеспечивают гибкость и эффективность при работе с фильтрами на основе даты в Odoo 15. Реализуя эти методы, разработчики Odoo могут улучшить свои приложения с помощью точных и своевременных возможностей фильтрации данных.