独舞沧澜 2020-11-05 14:33 采纳率: 50%
浏览 288

odoo13在many2many中domain筛选

在maintenance(维护)的maintenance.request(保养请求)中新增执行人“zhi_xing_ren_ids”字段,人员应从团队成员中选择

1、原例:

maintenance_team_id = fields.Many2one(
            'maintenance.team', 
            string='Team', 
            required=True, 
            default=_get_default_team_id, 
            check_company=True)
#新增的
zhi_xing_ren_ids=fields.Many2many(
            comodel_name='res.users',
            relaton='maintenance_request_users_rel',
            column1='maintenance_request_id',
            column2='res_users_id',
            string='执行人',
            domain="[('company_ids', 'in', company_id)]")

 以上运行正常,未进行筛选;

2、domain改为

domain=lambda self: [('company_ids', 'in',self.company_id.id),('id', 'in',self.maintenance_request_id.member_ids.ids)]

 执行后不能正常过滤,没有返回任何数据,去掉后一个条件执行后结果一样

3、改用onchange来触发


    @api.onchange('maintenance_team_id')
    def _onchange_maintenance_team_id(self):
        self.zhi_xing_ren_ids=False
        if self.maintenance_team_id:
            members=self.maintenance_team_id.member_ids.ids
            return {'domain':{'zhi_xing_ren_ids':[('company_ids', 'in', self.company_id.id),('id','in',members)]}}

测试 :用onchange来触发有个缺点,必须要maintenance_team_id发生改变才能变更domain,当保存后要修改zhi_xing_ren_ids时onchange里的domain是不生效的,因为maintenance_team_id没有变

4、又改用定义方法来获取团队成员id

domain=lambda self: [('id', 'in',self._team_members())]

    def _team_members(self):
        if self.maintenance_team_id:
            print(str(self.maintenance_team_id.member_ids.ids))
        return self.maintenance_team_id.member_ids.ids

运行后,在新建form视图中不起作用,

在点击已存在的保养请求进入form视图时,能打印出maintenance_team_id.member_ids.ids,再编辑时就没有效果了

5、直接将maintenance_team_id.member_ids.ids的值写在domain中,如:[36,37]

domain=lambda self: [('id', 'in',[36,37])]

运行后domain是生效的

 

依据以上测试,写在字段中的变量似乎不起作用,只在进行修改时,进入form视图时触发一下,不知道网络上其他人怎么实现的

不知道该咋办了

  • 写回答

3条回答 默认 最新

  • 关注

    选了maintenance_team_id就限制zhi_xing_ren_ids的选择是吗?

    评论

报告相同问题?

悬赏问题

  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果