odoo17 添加上传文件动作代码
时间: 2024-12-12 09:16:16 浏览: 12
在Odoo 17(以前称为OpenERP)这款开源企业资源规划系统中,添加上传文件的动作通常涉及到自定义模块开发。以下是创建一个允许用户上传文件的基本步骤:
1. **模型定义**:
首先,在`__init__.py`中定义一个新的模型,比如`MyModel`,并添加一个字段用于存储文件。例如:
```python
from odoo import models
class MyModel(models.Model):
_name = 'my.module.my_model'
file_field = fields.Binary('File Upload', attachment=True)
```
2. **UI模板**:
在`views.xml`文件中,你需要在对应的form视图里增加一个表单元素,如`<field>`标签来显示文件上传输入框:
```xml
<field name="file_field" widget="oe_file Attachment" />
```
3. **创建按钮事件**:
在`views.xml`或`.py`中编写JavaScript函数,当用户点击上传按钮时触发文件选择:
```python
def action_upload(self):
return {
'type': 'ir.actions.act_window',
'view_mode': 'form',
'res_model': 'my.module.my_model',
'view_id': some_view_id,
'context': {'default_my_field': self.env.context.get('active_id') or False},
'target': 'new',
}
```
然后在`act_window`中引用这个函数。
4. **注册动作**:
在`.py`文件中注册动作,使其成为菜单项或某个业务流程的一部分:
```python
my_action = {
'name': 'Upload File',
'type': 'action',
'res_model': 'my.module.my_model',
'help': 'Help text for upload action',
'action': 'action_upload',
}
menu_id = self.env.ref('your_module_menu_id').add_child(my_action)
```
记得替换上述代码中的`my.module`、`MyModel`、`some_view_id`和`your_module_menu_id`为你实际项目中的相应内容。
阅读全文