是否可以为域模拟 "contains" 运算符? ("in" 的倒数)
Is it possible to emulate a "contains" operator for domains? (the inverse of "in")
我遇到过好几次这样的情况,我需要在域的左侧部分写一个 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)]"/>
有人处理过这种情况吗?有什么想法吗?
好的,我发现运算符“=”也像 'contains' 一样工作。所以实现这个问题真的很容易,因为新的过滤器必须和原来的完全一样,只是改变了字段名称:
<filter string="My Tasks" name="my_tasks" domain="[('user_ids','=',uid)]"/>
我已经在版本 10 上试过了,它很管用!
这些问题给了我提示:
我遇到过好几次这样的情况,我需要在域的左侧部分写一个 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)]"/>
有人处理过这种情况吗?有什么想法吗?
好的,我发现运算符“=”也像 'contains' 一样工作。所以实现这个问题真的很容易,因为新的过滤器必须和原来的完全一样,只是改变了字段名称:
<filter string="My Tasks" name="my_tasks" domain="[('user_ids','=',uid)]"/>
我已经在版本 10 上试过了,它很管用!
这些问题给了我提示: