草庐IT

odoo 开发入门教程系列-一些用户界面

一些用户界面数据文件(XML)参考:该主题关联文档可以查看DataFiles.上一章,我们通过CSV文件添加了数据。当需要添加数据格式简单时,用CSV格式还是很方便的,当数据格式更复杂时(比如视图架构或者一个邮件模板),我们使用XML格式。比如包含HTMLtags的helpfield。虽然可以通过CSV文件加载这样的数据,但是使用XML更方便。类似CSV文件,XML文件也必须按约定添加到合适的目录,并在__manifest__.py中进行定义。数据文件中的内容也是在模块安装或者更新时按序加载。因此,对CSV文件所做的所有说明对XML文件都适用。当数据链接到视图时,我们将它们添加到views文件

odoo 开发入门教程系列-一些用户界面

一些用户界面数据文件(XML)参考:该主题关联文档可以查看DataFiles.上一章,我们通过CSV文件添加了数据。当需要添加数据格式简单时,用CSV格式还是很方便的,当数据格式更复杂时(比如视图架构或者一个邮件模板),我们使用XML格式。比如包含HTMLtags的helpfield。虽然可以通过CSV文件加载这样的数据,但是使用XML更方便。类似CSV文件,XML文件也必须按约定添加到合适的目录,并在__manifest__.py中进行定义。数据文件中的内容也是在模块安装或者更新时按序加载。因此,对CSV文件所做的所有说明对XML文件都适用。当数据链接到视图时,我们将它们添加到views文件

odoo 给form表单视图内联列表添加按钮

实践环境Odoo14.0-20221212(CommunityEdition)代码实现模块文件组织结构说明:为了更好的表达本文主题,一些和主题无关的文件、代码已略去odoo14\custom\estate│__init__.py│__manifest__.py│├─models│estate_customer.py│estate_property_offer.py│__init__.py│├─static│││└─src│└─xml│estate_customer_inline_tree_buttons.js│└─viewsestate_customer_views.xmlwebclient_

odoo 给form表单视图内联列表添加按钮

实践环境Odoo14.0-20221212(CommunityEdition)代码实现模块文件组织结构说明:为了更好的表达本文主题,一些和主题无关的文件、代码已略去odoo14\custom\estate│__init__.py│__manifest__.py│├─models│estate_customer.py│estate_property_offer.py│__init__.py│├─static│││└─src│└─xml│estate_customer_inline_tree_buttons.js│└─viewsestate_customer_views.xmlwebclient_

odoo Actions学习总结

环境odoo-14.0.post20221212.tarActions(动作)action定义系统响应用户操作的行为:登录、操作按钮、选择发票等…action可以存储在数据库中,也可以作为字典直接返回,例如按钮方法。所有Action都有两个强制属性:type当前Action的类别,决定可以使用哪些字段以及如何解释actionnameaction的名称,在客户端的界面中显示对action的简短用户可读描述Bindings(绑定)除了两个强制属性外,所有action有用于在任意模型的上下文菜单中显示动作的可选属性:binding_model_id指定action绑定的模型,格式:moduleNam

odoo Actions学习总结

环境odoo-14.0.post20221212.tarActions(动作)action定义系统响应用户操作的行为:登录、操作按钮、选择发票等…action可以存储在数据库中,也可以作为字典直接返回,例如按钮方法。所有Action都有两个强制属性:type当前Action的类别,决定可以使用哪些字段以及如何解释actionnameaction的名称,在客户端的界面中显示对action的简短用户可读描述Bindings(绑定)除了两个强制属性外,所有action有用于在任意模型的上下文菜单中显示动作的可选属性:binding_model_id指定action绑定的模型,格式:moduleNam

odoo Web Controllers 学习总结

环境odoo-14.0.post20221212.tarWebControllersControllers控制器需要提供可扩展性,就像Model,但不能使用相同的机制,因为先决条件(已加载模块的数据库)可能还不可用(例如,未创建数据库或未选择数据库)。因此,控制器提供了自己的与模型的扩展机制:通过继承Controller创建控制器。通过route()修饰的方法定义路由:classMyController(odoo.http.Controller):@route('/some_url',auth='public')defhandler(self):returnstuff()要重写控制器,继承其类

odoo Web Controllers 学习总结

环境odoo-14.0.post20221212.tarWebControllersControllers控制器需要提供可扩展性,就像Model,但不能使用相同的机制,因为先决条件(已加载模块的数据库)可能还不可用(例如,未创建数据库或未选择数据库)。因此,控制器提供了自己的与模型的扩展机制:通过继承Controller创建控制器。通过route()修饰的方法定义路由:classMyController(odoo.http.Controller):@route('/some_url',auth='public')defhandler(self):returnstuff()要重写控制器,继承其类

Odoo 通过Javascript调用模型中自定义方法

实践环境Odoo14.0-20221212(CommunityEdition)代码实现在js脚本函数中调用模型中自定义方法:this._rpc({model:'demo.wizard',//模型名称,即模型类定义中_name的值method:'action_select_records_via_checkbox',//模型中自定义名称args:['arg_value']//传递给模型方法参数列表,列表中每个元素对应模型方法的一个位置参数}).then(function(res){//res为模型方法返回值console.log(res);//dosomething});模型方法定义#!/usr

Odoo 通过Javascript调用模型中自定义方法

实践环境Odoo14.0-20221212(CommunityEdition)代码实现在js脚本函数中调用模型中自定义方法:this._rpc({model:'demo.wizard',//模型名称,即模型类定义中_name的值method:'action_select_records_via_checkbox',//模型中自定义名称args:['arg_value']//传递给模型方法参数列表,列表中每个元素对应模型方法的一个位置参数}).then(function(res){//res为模型方法返回值console.log(res);//dosomething});模型方法定义#!/usr