如何修改product.product的display_name的显示,解决_rec_name失效的问题
回顾学习
之前有讲解过display_name是怎么由来的,odoo会去取_rec_name的值,会将_rec_name的值赋值给display_name。
class FandxProduct(model.Model):
_inhert = "product.product"
_rec_name = 'fandx_name'
fandx_name = fields.Char(string='产品名称')
这里我们会发现
_rec_name是无效的,之前我们也讲解过需要重写name_get才能会使用继承后重写的_rec_name。
class FandxProduct(model.Model):
_inhert = "product.product"
_rec_name = 'fandx_name'
fandx_name = fields.Char(string='产品名称')
def name_get(self):
return super(GoodsSkus, self).name_get()
这里惊喜的发现display_name的取值还是name的值。既然如此那么只能去在深入研究了display_name是怎么来的了。
先研究一下Basemodel中display_name字段的由来
# display_name的取值决定与_compute_display_name的方法
# 1. _setup_base
# 2. _add_magic_fields
@api.model
def _add_magic_fields(self):
# ....
# 重点关注,display_name原来是根据compute计算字段而来的
add('display_name', fields.Char(string='Display Name', automatic=True,
compute='_compute_display_name'))
#....
@api.depends(lambda self: (self._rec_name,) if self._rec_name else ())
def _compute_display_name(self):
names = dict(self.name_get())
for record in self:
record.display_name = names.get(record.id, False)
这么一看没有半点毛病,还是取值name_get(),那么只有一种可能了name_get()被重写了。
Product.product中的name_get()
查看了源码果不其然,name_get的方法被重写了,那么久研究一下他为什么没有走_rec_name
def name_get(self):
# ....
# 这里发现,product直接取值product.name,并没有取_rec_name,怪不得怎么重写rec_name都不会生效
name = variant and "%s (%s)" % (product.name, variant) or product.name
# ....
解决问题
Product的display_name为什么没有取值_rec_name的原因是找到了,那么对症下药就可以了,还是重写name_get(),但是返回的格式要注意name_get() -> [(id, name), ...]。
class FandxProduct(model.Model):
_inhert = "product.product"
_rec_name = 'fandx_name'
fandx_name = fields.Char(string='产品名称')
def name_get(self):
# 这里也可以根据自己的想法自由组建自己的display_name值的内容
for record in self:
name = record._rec_name
add_data = (record.id, name)
res.append(add_data)
return res
总结
- 其实说到底还是使用了name_get解决了问题,但是更加细致的了解了display_name的由来。
- 其实我们发现问题,耐心的去查看源码基本可以解决90%以上的问题。
- 有问题可以下方留言。
每日精进:慢慢建立自己的原则,做一个有原则的人。
如何修改product.product的display_name的显示,解决_rec_name失效的问题的更多相关文章
- 修改配置文件matplotlibrc,让Matplotlib显示中文
matplotlib默认不支持中文显示,网上的解决办法有好多种,但是大多数都是通过在代码中指定字体,虽然也能实现,但是多出那么几行代码让人觉得很恶心. 本文介绍一种通过修改配置文件matplotlib ...
- 织梦DEDECMS更换目录后页面内的图片和缩略图无法显示解决方法
http://www.win8f.com/seoyouhua/6609.html 很多人碰到织梦更换目录后内容图片和缩略图无法显示的问题,在此,慧鸿网络特地搜集整理了一篇关于织梦出现缩略图和内容无法显 ...
- (原创)Linux下MySQL 5.5/5.6的修改字符集编码为UTF8(彻底解决中文乱码问题)
« CloudStack+XenServer详细部署方案(10):高级网络功能应用 (总结)CentOS Linux 5.x在GPT分区不能引导的解决方法 » 2013-1 11 (原创)Linux下 ...
- ECstore报表不显示解决
最近研究ECSTORE发现后台报表显示空白,Google了一下发现N多统一的做法,直接往表里插几条数据.呵呵,更深入一点 1.要显示报表功能首先要确保已经配置好contab的定时任务,定时任务能够执行 ...
- 重装ArchLinux后修改GRUB配置不生效问题的解决
重装ArchLinux后修改GRUB配置不生效问题的解决 mount指令看一下挂载,或者vim /etc/fstab看一下有没有/boot,看看fstab是不是没写进去.... 我特喵昨天重装完Arc ...
- yoast breadcrumb面包屑导航修改去掉product
前面我们创建了wordpress添加post_type自定义文章类型和调用自定义post_type文章,现在yoast 面包屑导航出现home >product >分类1,想要把produ ...
- 关于wordpress在修改固定链接后,总显示Not Found的问题
参考来源: http://chinablog.blog.51cto.com/276793/280278 一.问题背景 使用wordpress搭建网站,为了让文章URL看起来漂亮一点,wordpress ...
- 修改linux命令行提示符路径显示
命令显示行太长,影响观感,这样需要修改,具体方法: 1. 修改 ~/.bashrc,在最后一行添加: export PS1='[\u@\h\W]$' 其中\u是当前用户名,\h是当前主机名,\w显示当 ...
- jquery uploadify修改上传的文件名和显示
如果觉得看文章太麻烦,可以直接看参考:http://stackoverflow.com/questions/7707687/jquery-uploadify-change-file-name-as-i ...
随机推荐
- 视频处理器为电池供电的设计提供4K视频编码
视频处理器为电池供电的设计提供4K视频编码 Video processor enables 4K video coding for battery-powered designs OmniVision ...
- java 全端开源 电商系统 springboot uniapp 小程序 前后端分离 高可用
Lilishop B2B2C商城系统 官方公众号 & 开源不易,如有帮助请点Star 所有jar包均可从maven中央仓库下载,无二次封装jar包,全端开源,无后门,无监控. 介绍 官网:ht ...
- 我想挑战下我的软肋,动手实现个Spring应用上下文!
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 目录 [x] 第 1 章:开篇介绍,我要带你撸 Spring 啦! [x] 第 2 章:小试牛 ...
- Django(69)最好用的过滤器插件Django-filter
前言 如果需要满足前端各种筛选条件查询,我们使用drf自带的会比较麻烦,比如查询书名中包含"国"字,日期大于"2020-1-1"等等诸如此类的请求,Djan ...
- 4.QT:spinbox(spindoublebox)控件的信号响应
Qt的QSpinBox和QDoubleSpinBox两个控件在默认情况下是valueChanged信号,会响应每次输入栏的改变. 比如想要输入数值"123",我们会依次键入1 - ...
- salesforce零基础学习(一百零四)Salesforce Optimizer
本篇参考: https://admin.salesforce.com/blog/2017/analyzing-org-salesforce-optimizer-webinar-recap 假设你在做一 ...
- 【Azure 应用程序见解】Application Insights Java Agent 3.1.0的使用实验,通过修改单个URL的采样率来减少请求及依赖项的数据采集
问题描述 近日好消息,如果是一个Java Spring Cloud的项目,想使用Azure Applicaiton Insights来收集日志及一些应用程序见解.但是有不愿意集成SDK来修改代码或者配 ...
- hadoop学习(三)HDFS常用命令以及java操作HDFS
一.HDFS的常用命令 1.查看根目录下的信息:./hadoop dfs -ls 2.查看根目录下的in目录中的内容:./hadoop dfs -ls in或者./hadoop dfs -ls ./i ...
- java -jar 运行springboot项目时内存设置
java -Xms64m #JVM启动时的初始堆大小 -Xmx128m #最大堆大小 -Xmn64m #年轻代的大小,其余的空间是老年代 -XX:MaxMetaspaceSize=128m # -XX ...
- BUU mrctf shit
吐槽:去年没写出的题,现在终于可以上手了,昂哥nb 动调发现直接卡着不动了,怀疑是反调试,果然有好几处反调试 这里选择就不先nop了,先让程序跑起来,然后attach,在输入函数下面下个断点,atta ...