是否可以模拟域的“包含”运算符? (“in”的倒数)

时间:2018-01-09 10:45:53

标签: python xml odoo-10 odoo

我曾经多次遇到过这样的情况:我需要在域的左侧部分编写Many2many / One2Many字段,在右侧部分编写简单记录。与in运营商一样,但反过来。

我所做的是通过变通方法来避免这种情况,但现在,我什么也没想出来。我目前的情况如下:

如果您安装了project模块,您会发现每个project.task对象都可以具有唯一的责任(user_id,是Many2one)。如果您打开任务视图,则会自动加载过滤器以仅查看您的任务:

<filter string="My Tasks" name="my_tasks" domain="[('user_id','=',uid)]"/>

但是,我需要的是允许将多个用户分配到同一个任务。首先,我在Many2many中创建了一个project.task字段:

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)]"/>

有没有人处理过这种情况?有什么想法吗?

1 个答案:

答案 0 :(得分:0)

好的,我已经意识到运算符'='就好像它也是'包含'一样。因此,实现此问题非常容易,因为新过滤器必须与现在完全相同,但更改字段名称:

<filter string="My Tasks" name="my_tasks" domain="[('user_ids','=',uid)]"/>

我已经在第10版上尝试了这个并且它正在运行!

这些问题给了我提示:

Odoo 8: Many2many domain filter

How to check if field 'contains' the value in Odoo