在Odoo专栏中,我们分享了很多技术文章,也不禁在思考:有哪些点是需要我们注意,却又很容易忽略的呢?这也是做Odoo开发时非常重要的内容,毕竟一个小bug,真的很磨人啊!
所以本期想分享一下做开发时,需要注意哪些问题~整理的或许并不全面,欢迎大家多多补充!
希望我们能一起规避更多的坑!
1、通过脚手架搭建项目框架:python odoo-bin scaffold 项目名称 工程目录
eg:在example目录下建立demo项目: python odoo-bin scaffold demo example
2、建立odoo.conf文件,配置以下参数:
3、如果自定义widget、视图样式等,需要在templates.xml中引用
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<template id="assets_end" inherit_id="web.assets_backend">
<xpath expr="." position="inside">
<script src="/demo/static/src/js/change_form_controller.js" type="text/javascript"/>
<link href="/demo/static/src/scss/deo.scss" rel="stylesheet" type="text/scss"/>
</xpath>
</template>
</odoo>
4、如果需要额外依赖其他模块或改造qweb后,在__manifest__.py中引用
'depends': ['base', 'account'],
'qweb': ['static/src/xml/change_demo.xml'],
5、修改权限文件ir.model.access.csv之后,需要重新启动服务,否则不生效。
6、修改js、css等静态文件不用重新启动服务,只需要刷新页面。
7、修改xml文件后如果不想升级,可以在odoo-bin启动文件Parameters增加以下配置,这样只刷新页面就能达到升级效果。
--dev=xml -c
8、当ORM可以实现的时候尽量使用ORM而不要直接写SQL语句,因为它可能会绕过ORM的一些规则如权限、事务等,还会让代码变得难读且不安全。
9、Odoo有自己的事务处理机制,不用手动提交事务。
10、Odoo的计算字段默认不存库。
11、如果扩展Odoo底层的res.user表,需要手动在数据库中增加扩展字段,再进行升级,否则升级报错。
12、使用@api.onchange注解,可以监听当前字段,但只有在页面上修改才会触发,后台修改不会触发。
13、使用@api.depends注解,要加上所有的依赖字段,页面修改或者后台修改都会触发,需要保存后才显示修改后的结果。
14、创建一个Model或者TransientModel类型的py文件,需要在相应的__init__.py引用,并且在权限文件ir.model.access.csv赋予权限;创建一个AbstractModel类型的py文件只需要在__init__.py引用,不用赋予权限。
15、如果修改qweb新建按钮,那么该按钮对应的方法前要加上@api.model注解