引言
课前准备
- 学员准备:能访问互联网的电脑,可安装应用程序
- 教学材料:课件、讲义、案例、视频等教学材料,后续更新至该链接
- 课题纪律:培训签到及随堂作业完成情况,工作群通报
预期成果
1、后端数据处理
2、系统间接口
3、了解Odoo代码开发规范
课程
1、后台CRUD数据修改
self.env('demo.model').create({})
self.env('demo.model').write({})
self.env('demo.model').browse({})
@api.onchange('value')
def _onchange_value(self):
for record in self:
record.value3 = float(record.value) / 100
@api.depends('value')
def _value_pc(self):
for record in self:
record.value2 = float(record.value) / 100
def set_value3(self):
for record in self:
total_employee = self.env['demo.employee'].search([('department_id', '=', record.department_id.id)])
total_employee.write({'value3': len(total_employee)})
self.env['demo.employee'].create({
'name': '新员工',
'department_id': record.department_id.id,
'value': 333,
})
record.value3 = len(total_employee)
def delete_employee(self):
employee = self.env['demo.employee'].search([('value', '=', 333)])
if employee:
employee.unlink()
else:
raise UserError("没有找到员工")
2、接口
# -*- coding: utf-8 -*-
from odoo import http
import json
def success_response(data):
res = {
"jsonrpc": "2.0",
"id": None,
"result": data
}
return http.Response(
json.dumps(res),
status=200,
mimetype='application/json'
)
class Demo(http.Controller):
@http.route('/demo/employee', auth='public')
def index(self, **kw):
return "Hello, world"
@http.route('/demo/employee/objects', auth='public')
def list(self, **kw):
employee_list = []
for employee in http.request.env['demo.employee'].search([]):
employee_list.append({
'id': employee.id,
'code': employee.code,
'name': employee.name,
'value': employee.value,
'value2': employee.value2,
'value3': employee.value3
})
return success_response(employee_list)
@http.route('/demo/employee/objects/<model("demo.employee"):obj>', auth='public')
def object(self, obj, **kw):
return http.request.render('demo.employee_object', {
'object': obj
})
@http.route('/demo/employee/objects', auth='public')
def list(self, **kw):
return http.request.render('demo.employee_list', {
'root': '/demo/employee',
'objects': http.request.env['demo.employee'].search([]),
})
addons_local/demo/views/templates.xml
<odoo>
<data>
<template id="employee_list">
<ul>
<li t-foreach="objects" t-as="object">
<a t-attf-href="#{ root }/objects/#{ object.id }">
<t t-esc="object.display_name"/>
</a>
</li>
</ul>
</template>
<template id="employee_object">
<h1><t t-esc="object.display_name"/></h1>
<dl>
<t t-foreach="object._fields" t-as="field">
<dt><t t-esc="field"/></dt>
<dd><t t-esc="object[field]"/></dd>
</t>
</dl>
</template>
</data>
</odoo>
评论区