Odoo中文社区可以通过以下两个域名访问:shine-it.net , odoo.net.cn

由于系统升迁的原因,本论坛部分较早期的内容存在格式和链接损坏失效的问题,并非本论坛系统本身的缺陷,望谅解

本社区没有维护任何QQ群讨论组,任何与本社区同名的QQ群讨论组的言论与本社区无关!

开发人员可以登录gitter讨论组: http://gitter.im/odoo-china/Talk, 需要github账号

如果您登录系统碰到问题,请在微信公众号留言:

修改现有Object增加字段,通过更新模块后新字段加不进去?



  • 把官方的travel模块拿下来练手,安装完毕后,修改custome.py,增加一个'is_hostel'字段,见下面的'is_hostel'
        columns = {
            'rooms_id': fields.one2many('travel.room', 'hostel_id', 'Rooms'),
            'quality': fields.char('Quality', size=16),
            'is_hostel': fields.boolean('Is Hostel'),
        }

    然后更新模块,选择'Travel'模块进行update,可是新字段不齐作用,到对象的字段里面查询不到这个字段
    我的问题: 难道OE只能更新__openerp
    _.py里面[update_xml]部分的XML吗? 如果是的话那模块可咋开发测试?

    另外我想试试是不是卸载模块重新安装可以,结果卸载再安装报错了,看来模块的卸载还是不好整



  • 重启openerp server
    因为__init__.py 里 import 了custome.py,生成了custome.pyc文件
    你改了custome.py后程序还是调用custome.pyc
    重新启动openerp server并登陆数据库,会重新加载所有已安装模块,这个custome.pyc会被重新生成,然后你再更新模块数据库里才有这个字段。

    个人理解。
    不知道我说的对不对,或者是不是足够清楚。


  • 管理员

    我再提示一点,确保你的addons下没有travel.zip,因为当zip和文件夹同时存在的时候,zip文件优先级会先于文件夹。文件夹的修改就会没发影响系统。



  • 多谢两位大拿的帮助!!
    按照Jeff的方法重启再更新模块就行了,另外也谢谢Joshua的提醒,zip我也是怕影响,已经删掉了
    还有个问题,这个pyc不是在被import的时候,如果py文件已经改变,会重新生成吗?但是现在我试验把pyc文件删除,OE都不重新生成pyc,不过感觉这个机制应该是Python的,和OE无关
    我现在是在Eclipse下面debug模式运行的,记得前段时间把py只要一改,服务器会有所动作,但是现在悄无声息了



  • 进一步测试结果:
    用运行__init__.py的方式,python生成了新的pyc, 但是更新模块不管用,重启server后,再次更新模块就OK了
    看了下,pyc文件就是我手工生成的那个,在server重启的时候没有变化,所以看来这个还是和OE的模块更新机制有关
    后续有时间得仔细看看OE的模块管理代码了,因为在开发调试的时候肯定会碰到这种修改object的情况,总是手工重启服务器不是办法
    不知两位有啥好方法,你们开发过程中也应该有这个问题吧?


Log in to reply