
Odoo中文社区可以通过以下两个域名访问:shine-it.net , odoo.net.cn
由于系统升迁的原因,本论坛部分较早期的内容存在格式和链接损坏失效的问题,并非本论坛系统本身的缺陷,望谅解
本社区没有维护任何QQ群讨论组,任何与本社区同名的QQ群讨论组的言论与本社区无关!
开发人员可以登录gitter讨论组: http://gitter.im/odoo-china/Talk, 需要github账号
如果您登录系统碰到问题,请在微信公众号留言:
求教:关于两个模块间依靠的问题
-
本人需要重新开发一个生产管理的模块,现在修改了sale模块中工作流的动作,order confirm后要在我自己添加的模块中的需求表中插入数据。同时在需求表中也要有order_line的主键关联,这样我才能在生产中回溯到合同。在模块安装中出现了问题。我修改了sale模块的依靠关系,添加了我的自建模块mrp_new。于是在装sale模块前需要安装自建的mrp_new模块,而我mrp_new模块中的production表又有一个字段叫sale_order_line_id:fields.many2one('sale.order,line','合同明细来源',required=True).于是openerp会报错,找不到sale.order,line这个relation。这个我能理解,因为目前还没有添加sale模块的对象和数据库。那我只有改依存关系,让mrp_new依存于sale模块,但是这样我sale模块中需要插入mrp_new模块中的production表的数据又会出现找不到mrp_new.production的对象了。
我看了原模块的操作,他建立的关系是sale.order.line中建立一个'procurement_id': fields.many2one('mrp.procurement', 'Procurement'),而不是我在生产需求中建立关系到sale,order,line.这样可以从合同看到生产需求,但是从生产需求怎么看到合同的内容呢?
初次研究openerp,可能有很多没有了解到的东西,希望各位大大能指导指导我这个疑问。
-
在模块开发中不应直接修改已有模块。你修改sale模块的workflow并在sale模块中添加对mrp-new的依赖的做法是不正确的,同时,因为两个模块之间互相依赖,造成循环引用。应该是在mrp-new中继承sale模块中的类并加以改造。
-
我新建个class sale_new继承于sale,那么我的视图,工作流等等是不是都需要重新写??
-
假如我仍然采用sale现有的工作流步骤,但是在继承类中重写了他每一步的def,那么安装新模块前,他采用的是原有的业务逻辑,安装后就用的我重写的业务逻辑了??
-
super(类名, self).方法( 就可以调用被继承类的方法).
还是那句老话, 多看老肖教程.....
-
我不是要调用父类方法,我是要修改父类的方法,要重写。教程我看过了,就是入门的东西,涉及到核心代码的编写很多要靠试,我最开始就是试着改原模块,幸好提醒了我可以用继承来实现,这样让我恍然大悟,省却了很多时间,这就是来这里提问的好处。
openerp资料不好找,官方文档和一些资料都是e文,而且还不好搜索,看起来很慢,而且光看不试也记不住什么东西。只所以有这样的疑问,是我发现这里的继承同传统意义上的继承是有区别的,这里的继承在openerp看来,只是对应在原有数据库表上进行了修改,可以说是同一个对象,重写方法后,因为工作流仍然用的是原有模块的工作流。工作流步骤里定义方法他是找父类的方法呢,还是找子类的方法。
[[i] 本帖最后由 dreambecky 于 2010-5-15 18:06 编辑 [/i]]
-
继承后就是同一个对象了. 不存在父与子...
子的工作流就是父的工作流...
子的工作流不重写的话, 就是父的工作流 然后 父的工作流中可以使用子的方法.
只要你的子方法要在工作流中使用, 而父的工作流中没有相应的节点调用的话, 就要重写修改父工作流...
-
tks,我已经试出来了,确实是这样,重写后直接用的子类的方法了。