首页 > 解决方案 > 如何通过odoo 10向导中的自定义方法从Many2many字段中删除数据?

问题描述

我有两个视图: 1. 注册表视图 2 更新注册向导视图。型号 : 1 注册 2 会员

我正在使用 Many2many 字段(“成员”)设置注册过程。注册过程后,表单视图上显示一个按钮(更新成员)。单击此按钮时,将出现一个向导窗口,其中显示已注册的成员。在这里,我需要删除一些成员(从向导中列出的成员中)并单击 ApplyChanges 按钮进行更改(调用自定义函数 - ApplyChanges)。最后更改将应用​​于主要注册模型。我该怎么做?

incoming_member_ids = fields.Many2many("members", String='Incoming Members')

传出成员ids = fields.Many2many(“成员”,字符串='传出成员')

### incoming members list
if x.action_type == 'incoming_members':
   for incoming_partner in x.incoming_members_ids:
      incoming_member_ids.append(incoming_member.id)
      if not incoming_member_ids:
        continue
      self.env['registered.members'].create({
     'member_ids': incoming_member_ids[0],
     })
     incoming_member_ids.remove(incoming_member_ids[0])
   return True
  ### Outgoing members list  
 elif x.action_type == 'outgoing_members':                   
    for outgoinging_member in res.outgoing_member_ids:
        outgoing_member_ids.append(outgoinging_member.id)
        if not outgoing_member_ids:
           continue
      self.env['registered.members'].create({
     'member_ids': outgoing_member_ids[0],
     })    
     outgoing_member_ids.remove(outgoing_member_ids[0])
   return True

标签: pythonpostgresqlodoo

解决方案


要从man2many字段中删除特定 id 的关系,您必须在字段上使用odoo提供的符号。假设您要对 is 执行操作的记录集records,man2many 字段是outgoing_member_ids,要从该关系中删除的 id is outgoing_member_ids[0],您必须编写:

records.write({'outgoing_member_ids': [(3, outgoing_member_ids[0])]})

推荐阅读