Odoo15 自定义Widgets 基础教程
时间: 2023-09-01 14:10:24 浏览: 411
odoo web 开发
4星 · 用户满意度95%
Odoo15 是一款功能强大的企业管理软件,具有很多的自定义功能。其中之一就是自定义Widgets,它可以帮助你更好地管理和展示数据。下面是一个基础教程,帮助你入门自定义Widgets。
1. 创建自定义Widgets
首先,你需要创建一个新的模块或使用现有的模块。在模块的目录下,创建一个新的文件夹,并在该文件夹中创建一个新的 Python 文件。在 Python 文件中,你需要定义一个新的类,该类继承自 Odoo 的 Widget 类。
```python
from odoo import fields, models, api
from odoo.addons.web.controllers.main import Action
class MyCustomWidget(models.AbstractModel):
_name = 'my.custom.widget'
_description = 'My Custom Widget'
@api.model
def render_widget(self, values):
# widget rendering logic here
return {
'type': 'ir.actions.client',
'tag': 'my.custom.widget',
'params': {'value': values},
}
```
2. 注册自定义Widgets
在 Odoo 中注册自定义Widgets 非常简单。只需将你的自定义Widgets 添加到 Odoo 的 Web 界面即可。要完成此操作,请在模块的 XML 文件中添加以下代码:
```xml
<odoo>
<data>
<template id="assets_backend" inherit_id="web.assets_backend">
<xpath expr="." position="inside">
<script type="text/javascript" src="/my_module/static/src/js/my_custom_widget.js"></script>
</xpath>
</template>
</data>
</odoo>
```
在这个例子中,我们将自定义Widgets 的 JavaScript 文件 `my_custom_widget.js` 添加到了 Odoo 的 Web 界面中。
3. 编写自定义Widgets 的 JavaScript 代码
在你的自定义Widgets JavaScript 文件中,你需要编写一些逻辑来处理你的自定义Widgets。你可以使用 jQuery 或其他 JavaScript 框架来处理你的代码。
```javascript
odoo.define('my_module.my_custom_widget', function (require) {
"use strict";
var AbstractField = require('web.AbstractField');
var MyCustomWidget = AbstractField.extend({
events: _.extend({}, AbstractField.prototype.events, {
'click .my-custom-widget': '_onClick',
}),
_render: function () {
this.$el.html('<button class="my-custom-widget">Click me</button>');
},
_onClick: function (event) {
alert('Button clicked!');
},
});
return MyCustomWidget;
});
```
在这个例子中,我们定义了一个名为 `MyCustomWidget` 的新类,并继承了 Odoo 的 `AbstractField` 类。我们还定义了 `_render` 和 `_onClick` 方法来处理渲染和点击事件。
4. 在视图中使用自定义Widgets
最后,你需要在视图中使用自定义Widgets。要实现此操作,请在视图的 XML 文件中添加以下代码:
```xml
<odoo>
<data>
<record model="ir.ui.view" id="my_custom_view">
<field name="name">My Custom View</field>
<field name="model">my.custom.model</field>
<field name="arch" type="xml">
<form>
<field name="my_field" widget="my_custom_widget"/>
</form>
</field>
</record>
</data>
</odoo>
```
在这个例子中,我们将自定义Widgets 作为 `widget` 属性添加到视图字段中。
现在,你已经创建了一个自定义Widgets 并将其添加到 Odoo 中。你可以通过类似的方式创建其他自定义Widgets,以便更好地管理和展示数据。
阅读全文