在年份范围内搜索odoo

Search in year ranges odoo

我定义了这些字段:

'date_beg': fields.selection([(num, str(num)) for num in range(1900, (datetime.now().year)+1 )], 'Año inicial'),

'date_end': fields.selection([(num, str(num)) for num in range(1900, (datetime.now().year)+1 )], 'Año final'),

他们在我的 table:

中生成整数变量
ID          date_beg       date_end

1            1999            2005

2            2000            2004

3            1990            1995

我的要求是,当用户在搜索视图中输入年份时,odoo 将根据范围显示今年所属的记录。

例如,如果用户在搜索视图中键入“2003”并且我有以上 table 个值,那么 odoo 将显示 ID 值为 1 和 2 的记录。

拜托,提点建议!!

提前致谢!

继承模块的搜索视图或使用 https://www.odoo.com/documentation/8.0/reference/views.html#search

创建新的搜索视图
<field name="date_beg" string="Date Beginning" filter_domain="[('date_beg', '&lt;=', self)]" />
<field name="date_end" string="Date End" filter_domain="[('date_end', '&gt;=', self)]" />

我是这样解决的:

def _search_year(self, cr, uid, obj, name, args, context):
    x = [('cm_datebeg', '<=', args[0][2]), ('cm_dateend', '>=', args[0][2])]
    res = self.search(cr, uid, x, context=context)
    return [('id', 'in', res)]

像这样声明了一个字段:

       'date_search': fields.function(lambda self: self, string='Búsqueda por año', type='integer', fnct_search=_search_year)

最后,在我的搜索视图中:

                    <field name="date_search"/>