compute属性,实现的主要功能是,前端界面选择某个字段的时候,指定与该字段关联的其他字段可以关联,并联动的显示。

可以和inverse属性同时使用,不加inverse属性的话,前端界面的显示效果只是只读样式,不能编辑修改;而加上inverse属性时候,相应的关联字段可以修改,

但是,修改后,实际上修改的是原表;即会将原表的数据级联更改。

class HelloJesson(models.Model):
_name = 'test.cus_goods_list'
# rec_name = 'goods_name'
_inherit = ['mail.thread', 'ir.needaction_mixin']
_description = 'Test Goods List' goods_name = fields.Char(compute='_generate_about_name', string="goods name", inverse='_write_stage_fold')
cus_goods_tariff_id = fields.Many2one(comodel_name="other_yourself_model.cus_goods_tariff", string="cus goods Code TS", required=False, ) @api.onchange('cus_goods_tariff_id')
def _generate_about_name(self):
"""根据当前cus_goods_tariff_id的变化 动态关联显示goods_name"""
for goods_list in self:
if goods_list.cus_goods_tariff_id:
goods_list.goods_name = goods_list.cus_goods_tariff_id.NameCN def _write_stage_fold(self):
""" inverse='_write_stage_fold' 增加可编辑功能 但是inverse会将原来表中的数据级联修改"""
for goods_list in self:
if goods_list.cus_goods_tariff_id:
goods_list.cus_goods_tariff_id.NameCN = self.goods_name

实现compute字段 前端可以编辑修改的方法有两种:

(1)我们可以在模型定义中,再单独添加一个字段g_name,然后该字段根据compute生成的那个字段good_name的值进行取值并赋值给g_name;

class HelloJesson(models.Model):
_name = 'test.cus_goods_list'
rec_name = 'g_name'
_inherit = ['mail.thread', 'ir.needaction_mixin']
_description = 'Test Goods List' g_name = fields.Char(string="goods name") # 商品名称
goods_name = fields.Char(compute='_generate_about_name', string="goods name", store=True) # 商品名称
cus_goods_tariff_id = fields.Many2one(comodel_name="other_yourself_model.cus_goods_tariff", string="cus goods Code TS", required=False, ) @api.onchange('goods_name')
def change_name(self):
"""由于compute字段前端无法编辑,定义新方法,ID改变生成商品名改变goods_name,再由goods_name的变化,触发赋值给g_name"""
for goods_list in self:
if goods_list.goods_name:
# goods_list.update({'name': goods_list.goods_name})
goods_list.g_name = goods_list.goods_name @api.depends('cus_goods_tariff_id')
def _generate_about_name(self):
"""根据cus_goods_tariff_id编码的变化 改变goods_name"""
for goods_list in self:
if goods_list.cus_goods_tariff_id:
goods_list.goods_name = goods_list.cus_goods_tariff_id.NameCN

(2)方式二,可以直接将compute属性去掉,装饰器使用@api.onchange,可以直接实现前端相关字段动态生成,并且可以编辑的效果。

odoo开发笔记--模型字段compute用法的更多相关文章

  1. odoo开发笔记 -- 模型字段定义中设置默认值

    例如: company_id = fields.Many2one('res.company', string='Company', default=lambda self: self.env['res ...

  2. odoo开发笔记--模型中常用的方法

    create方法在数据表中插入一条记录(或新建一个对象的resource)格式:def create(self,cr,uid,vals,context={})参数:vals:待新建记录的字段值,是一个 ...

  3. odoo开发笔记 -- 模型一对多tree视图弹窗效果实现

    实现效果参考: 1. 开发者模式 -- 设置 -- 工作流 -- 编辑 -- 添加项目 2. 会计模块 -- 管理 -- 付款条款 -- 编辑/创建 实现方式,很简单.只要视图界面写个一对多关联字段就 ...

  4. odoo开发笔记 -- 用户字段值,默认给当前登录用户

    场景描述: 在一些视图下,当系统用户创建某条记录的时候,需要给某个用户字段设置默认值,即:默认值为系统的当前登录用户,如何实现? 处理方式: 在定义模型的时候,给该字段赋值就可以: operator_ ...

  5. odoo开发笔记 -- 模型后台方法返回前端form视图和tree视图的写法

    待补充: 参考:工作单跳转到通关清单 --form(一对一) 工作单跳转到报关单列表 --tree (一对多)

  6. odoo开发笔记 -- 模型(类)继承的几种机制

    1. 类继承 2. 原型继承 3. 委托继承 待完善 https://www.cnblogs.com/chenshuquan/p/10523626.html

  7. odoo开发笔记--日期or时间字段给定默认值

    开发中经常有这样的场景,需要给某个日期或者时间的字段默认值: 例如: 日期,默认今天 时间,默认当前时间 可以在odoo模型定义中进行设置, 如下样例提供参考: test_data = fields. ...

  8. odoo开发笔记 -- div标签代替odoo button写法

    odoo开发笔记 -- div标签代替odoo button写法 并调用自定义js <footer> <div id="confirm_request_cloud_repo ...

  9. odoo开发笔记 -- 搜索视图继承扩展

    odoo开发笔记 -- 搜索视图继承扩展

随机推荐

  1. c#多线程编程实战(原书第二版)文摘

    Thread t = new Thread(PrintNumbersWithDelay); t.Start(); t.Join(); 但我们在主程序中调用了t.Join方法,该方法允许我们等待直到线程 ...

  2. dijkstra算法(贪心算法)——解决最短路径问题

    最短路径 给定一张带权图和其中的一个点(作为源点),求源点到其余顶点的最短路径 基本思想 1)源点u,所有顶点的集合V,集合S(S中存有的顶点,他们到源点的最短路径已经确定,源点u默认在S中),集合V ...

  3. Ubuntu下删除卸载程序图标

    Ubuntu下删除卸载程序图标 方法一:直接在终端输入命令alacarte.可以任意增.改.隐藏.显示菜单,但无法删除菜单,即使拥有root权限. 方法二:注意几个目录和文件./usr/share/a ...

  4. 1045 Favorite Color Stripe 动态规划

    1045 Favorite Color Stripe 1045. Favorite Color Stripe (30)Eva is trying to make her own color strip ...

  5. Ng第十六课:推荐系统(Recommender Systems)

    16.1  问题形式化 16.2  基于内容的推荐系统 16.3  协同过滤 16.4  协同过滤算法 16.5  矢量化:低秩矩阵分解 16.6  推行工作上的细节:均值归一化 16.1  问题形式 ...

  6. (树状数组+离散化)lines--hdu --5124

    http://acm.hdu.edu.cn/showproblem.php?pid=5124 lines Time Limit: 5000/2500 MS (Java/Others)    Memor ...

  7. 20155326 2006-2007-2 《Java程序设计》第4周学习总结

    20155326 2006-2007-2 <Java程序设计>第4周学习总结 教材学习内容总结 继承共同行为 (1)继承基本上就是避免多个类间重复定义共同行为,关键词为extends. ( ...

  8. web-day5

    第5章WEB05- BootStrap篇 今日任务 使用JQuery完成表单校验 使用BootStrap制作一个响应式页面 使用BootStrap制作网站首页 教学导航 教学目标 掌握什么是响应式及响 ...

  9. hdu 1874 畅通工程 【spfa and dijkstra实现】

    题目 spfa: #include <bits/stdc++.h> using namespace std; const int maxn = 205; const int INF = 0 ...

  10. bootstrap3文章

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <meta name= ...