目 录CONTENT

文章目录

二、系统开发培训课程(四)

胡彬
2024-08-07 / 0 评论 / 0 点赞 / 536 阅读 / 575 字

引言

课前准备

  1. 学员准备:能访问互联网的电脑,可安装应用程序
  2. 教学材料:课件、讲义、案例、视频等教学材料,后续更新至该链接
  3. 课题纪律:培训签到及随堂作业完成情况,工作群通报

预期成果

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>

0

评论区