Openerp 加载视图上的Odoo自定义筛选器域字段
我在Odoo 9中为预订创建了一个模块,我的模型的一个字段是根据是否保留或否填充的。基本上,我的模型是:Openerp 加载视图上的Odoo自定义筛选器域字段,openerp,odoo-8,odoo-9,Openerp,Odoo 8,Odoo 9,我在Odoo 9中为预订创建了一个模块,我的模型的一个字段是根据是否保留或否填充的。基本上,我的模型是: class Reservation(models.Model): .... room_id = fields.Many2one('reservation.room', string="Room") 我定义了一个onchange函数,它返回一个域来过滤未保留的房间ID: @api.onchange('date') def _set_available_room(self):
class Reservation(models.Model):
....
room_id = fields.Many2one('reservation.room', string="Room")
我定义了一个onchange
函数,它返回一个域来过滤未保留的房间ID:
@api.onchange('date')
def _set_available_room(self):
.....
return {'domain': {'room_id': [('id', 'in', res)]}}
这很好,当我设置日期时,房间过滤正常。我的问题是当我保存预订并再次输入以编辑它时。room\u id
字段显示所有值,仅当我更改date
时,room\u id
才会被过滤
我曾尝试在字段定义中使用域
属性,如下所示,但不起作用:
room_id = fields.Many2one('reservation.room', string="Room", domain=lambda self: self._get_available_slots())
除了搜索可用房间外,我如何使用我的函数在负载视图中过滤此字段?如何通过SQL查询
self.env.cr.execute('SELECT id FROM reservation_room…')
计算res
变量?。正如我所说,它在onchange事件上运行良好。为什么不尝试覆盖name\u search
method呢?非常感谢。我已经重写了name\u search
方法,效果很好。在字段视图中,我设置了上下文
来传递日期,在域
中,我通过如下假字段进行过滤:域=“[('is_available','=',True)]”
。然后在name\u search
方法中,如果它被is\u available
过滤,我将执行所有SQL以获得可用的房间。@CarlosMayo感谢您的回答。祝你发展顺利;)如何计算res
变量?通过SQL查询self.env.cr.execute('SELECT id FROM reservation\u room…)
然后res=self.env.cr.fetchall()
。正如我所说,它在onchange事件上运行良好。为什么不尝试覆盖name\u search
method呢?非常感谢。我已经重写了name\u search
方法,效果很好。在字段视图中,我设置了上下文
来传递日期,在域
中,我通过如下假字段进行过滤:域=“[('is_available','=',True)]”
。然后在name\u search
方法中,如果它被is\u available
过滤,我将执行所有SQL以获得可用的房间。@CarlosMayo感谢您的回答。祝你发展顺利;)