首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我按“复制”键时会发生什么?

当我按“复制”键时会发生什么?
EN

Stack Overflow用户
提问于 2013-12-02 18:43:03
回答 2查看 2.9K关注 0票数 2

我要疯狂地使用OpenERP复制,如果我在Employee中复制一个用户,它会复制所有东西(系统的每个用户),如果我复制一个组,它只复制一些东西,显然它不会创建一个副本.如果我复制一个菜单,它不会复制子菜单选项。

WTF是否重复做“引擎盖下”?复制和复制一样吗?它是否创建指向同一对象的新引用?它是浅薄的还是深的?

我在OpenERP 7 LTS上。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-03 10:21:07

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

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

对于one2many关系(通常是将父记录与其子记录连接起来的关系,如发票和其行之间的关系),子记录也会被复制,因为原始记录不能从原始父记录中删除。

one2many关系将一条记录连接到仅仅是它的子程序的“相关记录”时,这种默认行为可能会产生不可预见的副作用:例如,one2many关系可以将员工链接到她的时间表条目,但是当员工被复制时,这些条目应该是而不是

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

如果只使用标准OpenERP模块复制记录时出现错误行为,则可能是官方窃听器上应该报告的错误。如果您使用的是额外的模块,请确保它们不会在某些模型上添加one2many字段,而不相应地覆盖copy方法。

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

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

票数 4
EN

Stack Overflow用户

发布于 2013-12-03 06:43:40

正如重复名称建议的那样,它只是复制记录,在后台它调用ORM's复制方法,

如果它只复制了某些特定模型的内容,那么copy方法就是覆盖的,这防止了所有字段的重复。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20335480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档