Openerp 当我按下“复制”按钮时会发生什么?

Openerp 当我按下“复制”按钮时会发生什么?,openerp,Openerp,我对OpenERP duplicate非常着迷,如果我在Employee目录中复制一个用户,它会复制所有内容(系统的每个用户),如果我复制一个组,它只复制一些内容,显然它不会创建副本。。。如果复制菜单,它不会复制子菜单选项 世跆联会做“引擎盖下”吗?复制品和复制品一样吗?它是否创建指向同一对象的新引用?它是浅拷贝还是深拷贝 我在OpenERP 7 LTS上。因为重复的名称表明它只是复制记录,在后台它调用了ORM的copy方法 如果只复制某些内容,这意味着对于特定的模型,copy方法将被覆盖,这将

我对OpenERP duplicate非常着迷,如果我在Employee目录中复制一个用户,它会复制所有内容(系统的每个用户),如果我复制一个组,它只复制一些内容,显然它不会创建副本。。。如果复制菜单,它不会复制子菜单选项

世跆联会做“引擎盖下”吗?复制品和复制品一样吗?它是否创建指向同一对象的新引用?它是浅拷贝还是深拷贝


我在OpenERP 7 LTS上。

因为重复的名称表明它只是复制记录,在后台它调用了
ORM的
copy方法

如果只复制某些内容,这意味着对于特定的模型,
copy
方法将被覆盖,这将防止所有字段的复制


如果不需要现有功能,可以覆盖它,并根据需要通过创建子模块对其进行更改。

复制菜单调用OpenERP
copy
方法,默认情况下,该方法作为浅层副本实现,但关系除外

浅复制意味着创建记录的新副本,将所有字段值复制为尽可能多的引用。例如,如果复制员工,则复制员工的部门将简单地设置为与被复制员工相同的部门,系统将而不是创建该部门的副本

对于
one2many
关系(通常是连接父记录与其子记录的关系,如发票与其行之间的关系),子记录也会重复,因为原始记录不能从其原始父记录中删除。
one2many
关系仅将记录连接到并非其子项的“相关记录”时,此默认行为可能会导致不可预见的副作用:例如
one2many
关系可能将员工链接到其时间表条目,但是当员工被复制时,这些条目肯定不应该被复制

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

如果在仅使用标准OpenERP模块复制记录时发现错误行为,则可能是应在上报告的错误。如果您使用的是额外的模块,请确保它们没有在某些型号上添加任何字段,而没有相应地覆盖
copy
方法

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


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

嗨,odony,我实际上复制了一个用户,但该用户有一个关联的员工,这就是问题发生的地方,它不仅复制了用户,而且复制了所有员工数据,这对我来说是没有意义的,我希望有不是员工的用户。。。我不明白为什么当我复制一个用户时,我也会复制所有的员工数据,如果是经理,那么它的所有下属也会被复制。Dan,这确实是OpenERP 7.0中的一个bug,并且你的是有效的(假设它是你的)。我在上面的回答中解释了发生这种情况的原因。解决方法很简单:
hr
模块必须在用户上禁用“相关员工”的复制,在员工上禁用“下属”的复制。感谢您打开错误报告!谢谢你的回复。它确实是我的:)我对OpenERP和Python还是新手,我正在努力找到需要更改的地方。