Odoo Orm фильтр даты?

Как я могу отфильтровать орм по сегодняшнему дню, этому месяцу и прошлому месяцу? что-то вроде:

a = self.env['model.model'].search_read([today])
a = self.env['model.model'].search_read([this_month])
a = self.env['model.model'].search_read([last_month])

person Nicolas Rondon    schedule 29.02.2020    source источник
comment
И каково имя поля, которое вы хотите использовать для фильтрации. А вы хотите воспользоваться поиском или почитать?   -  person Charif DZ    schedule 01.03.2020


Ответы (1)


Один из способов отфильтровать Recordset в Odoo - использовать метод filtered [1].

Это работает точно так же, можно использовать метод python filter [2].

Вы можете вызвать его в наборе записей, который возвращает ваш поиск, с помощью специального метода фильтрации, который может выглядеть следующим образом:

def filter_by_day(c_date, d_date):
  if (d_date.year == c_date.year)
    and (d_date.month == c_date.month)
    and (d_date.day == c_date.day):
      return True
  else:
    return False

Вы вызываете этот метод, используя filtered в своем наборе записей, следующим образом:

rs = env['model.model'].search([])
rs.filtered(lambda r: filter_by_day(r.create_date, datetime.datetime.now()))

Это возвращает отфильтрованный набор записей, который вы можете отобразить.

[1] https://www.odoo.com/documentation/13.0/reference/orm.html#filter

[2] https://book.pythontips.com/en/latest/map_filter.html#filter

person grafgustav    schedule 03.03.2020