如何在odoo 10中添加、更新和删除Many2many字段记录?

2024-04-15

我正在向导中设置功能,该功能将执行以下操作:

  1. 添加新记录并链接到当前现有记录Many2many Field.
  2. 更新现有记录Many2many Field.
  3. 删除当前已有的Many2many场地。 向导模型和实际模型有两个Many2many fields
  4. customers_ids = fields.Many2many('res.partners', 'Customers')
  5. new_customers_ids = fields.Many2many('res.partners', 'New Customers')

在视图中 Customers_ids 是只读视图,其中new_customers_ids允许添加项目(客户)和删除。

当我添加新客户时new_customers_ids从视图中但现在无法更新customers_ids(客户 ID)通过单击按钮save在向导上。 如何添加/删除和更新记录customers_ids通过添加/删除和更新new_customers_ids ?

 @api.multi 
def applychanges(self):

    for record in self:
        customers = []
        new_customers = []
        for customer in record.customers_ids:
            customers.append(customer.id)
        customers = list(set(customers))

        for x in record.new_customers_ids:
            new_customers.append(x.id)
        new_customers = list(set(new_customers_ids))
    
        record.customers_ids = [(1, 0, new_customers)]
       

Per ORM 文档 https://www.odoo.com/documentation/12.0/reference/orm.html#openerp-models-relationals-format,使用左运算符1应该用作:

(1、id、值)

并且有效地

更新 id 的现有记录id与值中的值。


在您的代码中,您正在使用(1, 0, values)它正在尝试更新记录id == 0,这是不可能存在的。

就其价值而言,我很少看到左运算符用作1。通常,我使用4更新记录值,这将添加new_customer to the record's customer_ids field:

record.customers_ids = [(4, 0, new_customers[0])]

然而,使用4一次只支持添加一条记录(这就是我使用的原因new_customers[0]在上面的例子中。如果您想一次添加多个,可以使用列表理解:

record.customers_ids = [(4, 0, new_customer) for new_customer in new_customers]

为了完整起见,这里是文档中的片段,其中包含每个可能的左运算符的用途和语法。作为参考,我几乎只用过3, 4, or 6.

(0、_、值)

添加根据提供的值字典创建的新记录。

(1、id、值)

更新 id 的现有记录id中的值values。不能用于create().

(2, ID, _)

删除id的记录id从集合中删除它(从数据库中)。不能用于create().

(3,id,_)

从集合中移除id为id的记录,但不删除它。不能用于One2many。不能用于create().

(4,id,_)

添加 id 的现有记录id到集合。不能用于One2many.

(5、_、_)

从集合中删除所有记录,相当于使用命令3明确地在每条记录上。不能用于One2many。不能用于create().

(6、_、id)

将集合中的所有现有记录替换为ids列表,等价物 使用命令5随后是一个命令4对于每个id in ids.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在odoo 10中添加、更新和删除Many2many字段记录? 的相关文章

随机推荐

  • 如何阻止 IDE 在我的非 Windows 项目中引用 Windows 特定的 XML 单元?

    我想在 Delphi XE5 中创建一个 Android 程序来处理 XML 文件 我用TXMLDocument 但我无法编译并运行它 因为 Delphi 反复添加Xml Win msxmldom in the uses部分 出现以下错误
  • ModuleNotFoundError:没有名为“win10toast”的模块; bs4.FeatureNotFound:找不到具有您请求的功能的树构建器:lxml

    我已经使用 pip 命令安装了它们 它显示它已安装但无法工作 我还更新了 pip 的版本 但它仍然显示更新 pip 的命令 C Users DELL gt pip install win10toast Requirement already
  • 加速用于 FDR 估计的 MATLAB 代码

    我有 2 个输入变量 p 值向量 p with N元素 未排序 and N x M具有通过随机排列获得的 p 值的矩阵 pr with M迭代 N相当大 10K到100K甚至更多 M假设是 100 我正在估计每个元素的错误发现率 FDR p
  • 使用 JSP 的 Request.getParameter

    我正在尝试根据请求参数自动填充下拉列表 我对 JSP 还很陌生 所以请原谅我问这个简单的问题 以下工作正常并正确显示警报 alert 所以我知道我想做的事情很简单 但是当我使用以下命令将相同的逻辑添加到我的 select 语句中时
  • 添加到 hashmap 需要很长时间

    我在我的java程序中坚持了几行 这花费了太多时间 大约20秒 而且对我来说这似乎很奇怪 这是线条 Map
  • 从随机字符串中查找单词列表中的单词

    我正在开发一个解读类型的程序 用户可以输入随机字母 程序会迭代这些字母和单词列表 以尝试找到包含单词列表中的这些部分或全部随机字母的单词 例如 if Input sasdfle words found in wordlist sad fle
  • 实体框架首先选择不带 .ToList() 的新 POCO

    我正在创建一个具有服务层 WCF 网站 和 Silverlight 4 客户端的应用程序 RIA 服务不是一种选择 因此我们创建中间类来来回传递 为了这个问题的目的 我们假设我来回传递美味Food对象 public class FoodDa
  • 使用knockout js实现html5拖放照片,durandal 2.0

    我在淘汰赛 js 视图模型中有一个照片列表 我希望能够在它们之间交换 实际上更正确的术语是将一张复制到另一张上面 这是我的简化视图模型 define durandal app knockout jquery function app ko
  • jQuery UI 日期选择器导致屏幕在选择日期后滚动到顶部

    我在 jQuery 对话框中有几个 jQuery 日期选择器 每当用户从日期选择器中选择日期时 屏幕就会滚动到顶部 这种情况只发生在 IE8 中 而不会发生在 Firefox 3 6 或 Chrome 5 中 由于大多数用户都会使用 IE
  • 如何在 CloudKit 中撤销用户的可发现性权限?

    我很好奇用户是否可以以某种方式更改可发现性权限 我在设置里没找到方法 您可以在您的设备上进行设置Settings iCloud iCloud Drive Find via Email
  • jenkins 擦除存储库并强制克隆与结帐前清理

    我试图了解用于拉取 git 存储库的 擦除存储库并强制克隆 和 签出前清理 这两个选项之间的区别 查看这两个选项的帮助部分 两者似乎都有相似的功能 我无法找出区别 它们的外观如下 清除存储库并强制克隆 在构建之前删除工作区的内容 确保工作区
  • 使用node.js os.cpus()来检测用户空闲时间?

    我正在使用 appjs 开发一个聊天应用程序 该应用程序使用 node js 作为平台 我一直在检测计算机何时处于空闲状态 当用户离开它或不使用它时 Node js 中有 os 模块及其os cpus 为每个核心提供此类信息 model I
  • 如何在不更改原始列表的情况下更改新列表?

    我有一个列表 其中填充了操作中的一些数据 并将其存储在内存缓存中 现在我想要另一个列表 其中包含基于某些条件的列表中的一些子数据 正如下面的代码所示 我正在对目标列表进行一些操作 问题是我对目标列表所做的任何更改也会对 mainList 进
  • 如何防止用户在文本框中输入特殊字符[重复]

    这个问题在这里已经有答案了 我需要验证文本框中的密码条目 我有一些要求需要满足 以便允许创建用户配置文件 其中之一是如果密码包含除数字和字母以外的任何其他内容 则拒绝注册系统需要拒绝进入 我尝试的一切似乎都失败了 这就是我现在站的地方 pr
  • 编译 eigen 程序时出错:错误:'seq' 不是 'Eigen' 的成员

    我试图在遵循算术序列的索引中索引矩阵 根据官网的Eigen教程 我应该使用Eigen seq firstVal lastVal step 来生成这个序列 调用此函数后 会弹出该线程标题中粘贴的错误 我检查了本地 eigen 文件夹中的所有文
  • 如何在 python-docx 中获取单元格背景颜色?

    我正在尝试使用 python docx 从 MS Word 表中读取数据 有一种方法可以设置表格单元格的背景颜色 tcPr cell tc get or add tcPr shd OxmlElement w shd shd set qn w
  • 扩展 ASP.NET 应用程序

    这是一个非常广泛的问题 但希望我能得到有用的提示 目前我有一个在单个服务器上运行的 ASP NET 应用程序 我现在需要进行扩展以适应不断增加的客户负载 所以我的计划是 1 将 ASP NET 和 Web 组件扩展到五台服务器上 2 将数据
  • 用scrapy一一爬取网站列表

    我正在尝试抓取网站列表scrapy 我尝试将网站网址列表作为start urls 但后来我发现我买不起那么多内存 有什么办法可以设置scrapy一次抓取一两个网站 您可以尝试使用concurrent requests 1以免数据超载 htt
  • 如何在java服务器端解密cryptojs AES加密消息?

    我有以下基于 cryptojs 的 javascript 加密 解密函数 它工作得很好 我在使用 cryptpjs 加密消息时使用随机盐 随机 iv 值和特定密码 我在解密加密消息时重复使用相同的盐 iv 和密码来生成密钥 这部分效果很好
  • 如何在odoo 10中添加、更新和删除Many2many字段记录?

    我正在向导中设置功能 该功能将执行以下操作 添加新记录并链接到当前现有记录Many2many Field 更新现有记录Many2many Field 删除当前已有的Many2many场地 向导模型和实际模型有两个Many2many fiel