【发布时间】:2018-01-09 10:45:53
【问题描述】:
我曾多次遇到需要在域左侧写入Many2many/One2Many 字段并在右侧写入简单记录的情况。类似于 in 运算符,但反过来。
我所做的是通过变通方法避免这种情况,但现在,我什么也没想到。我目前的情况如下:
如果您安装project 模块,您会看到每个project.task 对象都可以有一个唯一的负责人(user_id,是一个Many2one)。如果您打开任务视图,则会自动加载过滤器以仅查看您的任务:
<filter string="My Tasks" name="my_tasks" domain="[('user_id','=',uid)]"/>
但是,我需要的是允许将多个用户分配给同一个任务。所以首先,我在project.task 中创建了一个Many2many 字段:
user_ids = fields.Many2many(
comodel_name='res.users',
string='Project Managers',
default=lambda self: self.env.user.mapped('id')
)
一切正常,但是,现在我需要使过滤器以与之前相同的方式工作,但使用此字段。这是我被困的地方,需要一个假设的运算符contains。
<filter string="My Tasks" name="my_tasks" domain="[('user_ids','contains',uid)]"/>
有人处理过这种情况吗?有什么想法吗?
【问题讨论】: