gpt4 book ai didi

odoo - 当我按下“重复”按钮时,到底会发生什么?

转载 作者:行者123 更新时间:2023-12-02 21:41:46 27 4
gpt4 key购买 nike

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

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

我使用的是 OpenERP 7 LTS。

最佳答案

重复的菜单调用 OpenERP copy 方法,该方法默认实现为浅拷贝,但 one2many 除外。关系。

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

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

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

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

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

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

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

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