引言
课前准备
- 学员准备:能访问互联网的电脑,可安装应用程序
- 教学材料:课件、讲义、案例、视频等教学材料,后续更新至该链接
- 课题纪律:培训签到及随堂作业完成情况,工作群通报
预期成果
1、页面交互,关联页面间跳转
2、系统间接口
3、了解Odoo代码开发规范
课程
1、页面跳转
新增ID字段
demo_id = fields.Integer(string='样例id')
<field name="demo_id"/>
跳转按钮
addons_local/mrp_issue/views/views.xml
<div class="oe_button_box" name="button_box" invisible="0">
<button class="oe_stat_button"
name="open_demo_model_form"
icon="fa-th-list"
type="object">
<div class="o_field_widget o_stat_info">
<span class="o_stat_text">样例</span>
</div>
</button>
</div>
addons_local/mrp_issue/models/models.py
def open_demo_model_form(self):
return {
'type': 'ir.actions.act_window',
'target': 'current',
'view_mode': 'form',
'res_model': 'demo.model',
'res_id': self.demo_id,
'context': self.env.context
}
2、数据修改
self.env('demo.model').create({})
self.env('demo.model').write({})
self.env('demo.model').browse({})
3、接口
# -*- coding: utf-8 -*-
from odoo import http
class MrpIssueController(http.Controller):
@http.route('/mrp/issue/helloworld', auth='public')
def index(self, **kw):
return "Hello, world"
# @http.route('/demo/demo/objects', auth='public')
# def list(self, **kw):
# return http.request.render('demo.listing', {
# 'root': '/demo/demo',
# 'objects': http.request.env['demo.demo'].search([]),
# })
@http.route('/mrp/issue/objects/<model("mrp.issue"):obj>', auth='public')
def object(self, obj, **kw):
return http.request.render('mrp_issue.workcenter', {
'object': obj
})
addons_local/mrp_issue/views/templates.xml
<odoo>
<data>
<template id="mrp_issue.workcenter" name="Workcenter Layout">
<t t-call="web.layout">
<span>问题单号:</span><span t-esc="object.name"/><br/>
<span>记录人员:</span><span t-esc="object.user_name"/><br/>
<span>记录时间:</span><span t-esc="object.occur_time"/><br/>
<span>问题描述:</span><span t-esc="object.description"/>
</t>
</template>
</data>
</odoo>
评论区