gpt4 book ai didi

odoo - 当我按下复制键时到底发生了什么?

转载 作者:行者123 更新时间:2023-12-02 04:43:29 26 4
gpt4 key购买 nike

我对 OpenERP 副本感到疯狂,如果我在员工目录中复制一个用户,它会复制所有内容(系统的每个用户),如果我复制一个组,它只会复制一些东西,显然它不会创建副本。 .. 如果我复制菜单,它不会复制子菜单选项。

WTF 是否重复“幕后”?副本和副本一样吗?它是否创建指向同一对象的新引用?是浅拷贝还是深拷贝?

我正在使用 OpenERP 7 LTS。

最佳答案

复制的Menu调用了OpenERP的copy方法,默认实现为浅拷贝,one2many除外。关系。

浅拷贝 是指创建记录的新副本,所有字段值都尽可能复制为引用。例如,如果您复制一名员工,则复制员工的部门将简单地设置为与复制的部门相同的部门,系统将不会创建该部门的副本。

对于 one2many 关系(通常是连接父记录与其子记录的关系,如发票与其行之间的关系),子记录也被复制,因为原始记录那些不能从他们原来的 parent 那里被剥夺。
one2many 关系将记录连接到并非真正是其子项的“相关记录”时,此默认行为可能会导致无法预料的副作用:例如 one2many 关系可以链接员工到她的时间表条目,但当员工重复时,这些条目肯定重复。

由于这个原因,OpenERP 的各种对象模型可以在copy 操作期间实现额外的逻辑,并显式关闭不包含 real 的 one2many 关系的复制。 children”,以及更改任何复制的值(例如在记录名称中附加“(复制)”)。

如果您在仅使用标准 OpenERP 模块复制记录时看到不正确的行为,这可能是一个应该在 official bugtracker 上报告的错误。 .如果您使用额外的模块,请确保它们不会在某些模型上添加 one2many 字段,而不会相应地覆盖 copy 方法。

PS:如果您在“员工目录”中复制记录,您实际上是在复制员工(人力资源资源),而不是用户(具有登录访问权限的用户帐户)。这些在 OpenERP 中是不同的概念,因为有些员工可能不需要登录(没有用户帐户),有些用户可能不是员工(例如承包商或系统帐户)。

更新:a bug目前在OpenERP 7.0中存在,在复制用户时导致相关员工无效重复,在复制员工时导致下属类似重复。这个错误说明了当模块无法正确处理它们定义的 one2many 关系的重复时会发生什么。

关于odoo - 当我按下复制键时到底发生了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20335480/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com