本博客由Odoo开发人员专门组成,他们深入了解了从Odoo 7到Odoo 10之间发生的技术转变。大家都知道,最初的版本是Open ERP,最终命名为Odoo。两者之间有很多技术上的区别Odoo版本7和Odoo版本10如果我们看看。作为一名开发人员,我在开始工作时遇到了许多障碍和挑战,因为当时没有详细描述版本更改的文档,特别是技术差异。
在讨论软件的技术细节之前,让我先简要介绍一下Odoo。2005年2月,Odoo以Tiny ERP的名字进入了它的革命性领域。在初始阶段,Tiny ERP有4个版本-版本1、2、3和4。2009年4月晚些时候,Odoo发布了它的第5个版本,并从Tiny ERP获得了Open ERP的名称更改。Open ERP进一步推出了4个不同的版本——V5、V6、V6.1和V7。最后,在版本7发布后不久,Open ERP最终被命名为Odoo,拥有全新的品牌主题和logo。Odoo V8于2014年9月18日发布。最新的Odoo系列嵌入了4个版本——V8、V9、V10和V11。版本11很快就会有更多的功能和同步的技术。
在这篇博客中,我将详细介绍Odoo 7和Odoo 10版本的技术转变
主要差异:
应用程序接口
在版本7中,我们使用了与版本8,9,10中不同的api。
新api的装饰器示例:
@api。回报,@api。多,@api。1、@api。模型,@api。约束,@api.depends, @api。onchange, @api.noguess。
在v8、v9和v10中使用了新的api。V7不使用新的api。
在v7(旧Api)中,我们必须通过函数传递参数,如数据库游标(cr)、用户id(uid)、上下文字典(context)和记录id(ids)。
V8和v9同时使用旧API和新API。
在v8, v9和v10(新的api)中,Odoo引入了更多面向对象的功能。我们不需要将参数与函数放在一起。这些参数隐藏在模型中。
V10只使用新的api。
2)池
池是存储OpenERP模型实例的字典对象。OpenERP可以管理多个数据库。每个数据库都有一个不同的池。自我。池正在引用当前的数据库实例。在Odoo的最新版本中删除了pool.get()方法。版本7、8和9部分包含池对象。Odoo 10完全删除了池对象。
3) manifest文件名
v7 |
__openerep__.py |
v8 |
__openerep__.py |
v9 |
__openerep__.py |
v10 |
__manifest__.py |
4) xml标记
v7 |
< openerp > |
v8 |
< openerp > |
v9 |
< openerp > |
v10 |
< odoo >
|
5)xpath
V7
V8
v9 < xpath expr = " / / [@ name = '多']”
v10 < xpath expr = " / / [@ name = '多']”
引用xpath从v9中删除带有字符串的表达式。
6) env
V7没有使用env概念。这是新api的概念。
在new api中使用Self.env ['model.name']而不是self.pool.get('model.name')。
v7 |
_columns ={
“product_id”:fields.many2one(“产品。产品”、“产品”),
}
|
v8 |
_columns = {
“product_id”:fields.many2one(“产品。产品”、“产品”),
}
和 product_id=字段。米any2one(“产品。产品”、“产品”) |
V8同时使用旧API和新API。这就是它可以使用两个字段声明方法的原因。
v9 |
_columns = {
“product_id”:fields.many2one(“产品。产品”、“产品”),
}
和 product_id=字段。米any2one(“产品。产品”、“产品”) |
V9也使用旧API和新API。所以它也使用两个字段声明方法。
v10 |
product_id=字段。米any2one(“产品。产品”、“产品”) |
V10只使用新的api。
设置字段的默认值。
v7 |
_defaults = {
'date': lambda * a: datetime.datetime.now()
} |
v8 |
_defaults = {
'date': lambda * a: datetime.datetime.now()
}
和
=日期字段。日期(字符串=“日期”默认= datetime.now ()) |
v9 |
_defaults = {
'date': lambda * a: datetime.datetime.now()
}
和
=日期字段。日期(字符串=“日期”默认= datetime.now ())
|
v10 |
=日期字段。日期(字符串=“日期”默认= datetime.now ()) |
9) Java脚本更改。
v7 |
函数openerp_pos_models(实例、模块) {
Var _t = instance.web._t;
}
|
v8 |
函数openerp_pos_models(实例、模块) {
Var _t = instance.web._t;
} |
v9 |
odoo.define (barcode_integration.interface,函数(要求) { 使用严格的;
Var core = require(' web.core '); Var _t = core._t;
}); |
v10 |
odoo.define (barcode_integration.interface,函数(要求) { 使用严格的;
Var core = require(' web.core '); Var _t = core._t;
}); |
在v7和v8中,我们使用原始js/ jquery。但在v9和v10中,我们使用骨干js。
这些是在7和10之间的版本中所做的一些基本更改。版本7和版本10之间发生了很多变化。如果你对这个博客感兴趣,请在收件箱中收到你宝贵的反馈,这将激励我在这个话题上写得更深入。