-
2020-10-19 19:28:06
开发环境ODOO 14 + UBUNTU 20.04,
ODOO14中, 如果要在某个表中增加字段, 以联系人表为例,主要需要如下两步:
一, 在模型中添加字段。
首先点击最左上菜单, 进入设置页面, 拉到最下, 点“激活开发模式”
然后导航到要更改的视图页面, 点左上的小甲虫 - 编辑视图:表单, 从弹出页面中可以看到当前页的视图名称(res.partner.form)和数据模型名称(res.partner), 关闭。 然后进入网站设置面面, 点左上菜单 “技术 - 数据库结构 - 模型”, 在出现的列表中找到对应模型名称“联系人(res.partner)”,点开,再点击左方的“编辑”按纽,然后在现有字段列表的最下方会出现“添加明细行”字样, 点击打开“创建字段”页面, 输入你的字段名比如“x_wechat", 注意:这里不要更改默认的开头“x_”, 不要用大写字母,选择类型“char 或文本均可” , 勾选CHECKBOX "可翻译", 保存并关闭, 然后在字段列表翻到最后一页就可以看到你加入的字段了。
二, 在视图中显示出来。
同样是在设置页面, 点左上菜单 “技术 - 用户界面 - 视图”, 会出现视图列表,找到联系人视图(res.partner.form), 点开, 会显示一个XML文件的结构,此处点左边的“编辑”, 然后在XML文件中找一个你想要的位置显示新增的字段, 用field表示, 通常为:
<field name="x_wechat" widget="wechat"/>
然后保存,刷新你的页面就可以看到新加的字段了, 如果再点页顶菜单的翻译就可以给当前字段增加多语言功能。
以此类推, 你可以在任意系统现有的表中新增字段, 字段有多种类型, 并在相关视图中显示出来。
更多相关内容 -
Odoo添加字段
2019-06-16 10:17:372.在 “设置-》技术-》数据库结构-》模型”在模型中找到需要添加的字段。 下面我们以产品添加名称字段为例: 2.1首先找到产品模板,查看这个模板的信息 2.2点击编辑,添加明细行,设置相应的字段。 2.3保存...1.将odoo调整到开发者模式下
2.在 “设置-》技术-》数据库结构-》模型”在模型中找到需要添加的字段。
下面我们以产品添加名称字段为例:
2.1首先找到产品模板,查看这个模板的信息
2.2点击编辑,添加明细行,设置相应的字段。
2.3保存之后,然后点击回到产品明细页面,点击右上角
,选择“编辑视图:表单”。创建页面代码。
注意:上图中<field name="x_name"/>的name值 是我们刚才创建的模型字段里的“字段名称”
然后点击保存,刷新页面,我们就能在产品明细里看到我们添加的字段了。
-
ODOO12 为已有模型添加字段.mp4
2020-09-01 14:23:59为已有表单添加字段是种常见的ODOO自定义操作,我们无需创建自定义模块即可在用户界面中进行实现. Partner 模型是 Odoo 内核自带的,无需安装任何应用即可使用,但这样在菜单中会无法查看到。一个简单的方法是安装... -
odoo 动态添加字段和视图动态添加字段
2020-11-07 12:19:13在某些情况下,需要动态添加字段A,B,C…,以及动态添加到tree视图显示,因其后面是后面添加的字段故要用xpath来写 第一步给模型添加字段 例:给 account.move.line 模型动态添加字段 model = self.env['ir.model']...在某些情况下,需要动态添加字段A,B,C…,以及动态添加到tree视图显示,因其后面是后面添加的字段故要用xpath来写
- 第一步给模型添加字段
例:给 account.move.line 模型动态添加字段
model = self.env['ir.model'].search([('model', '=', 'account.move.line')], limit=1) #找到记录account.move.line模型的记录 fields_name = 'x_wg_%s_id' % (res.model_id.model.replace('.', '_')) #字段name new_field = self.env['ir.model.fields'].create({ 'model_id': model.id, #添加到model模型的字段 'name': fields_name, #字段name 'field_description': res.name, #字段string 'ttype': 'many2one', #字段关系(任意都是可以的) 'relation': res.model_id.model, #many2one关联的模型(根据ttype来确认是否关联) })
- 把字段添加在视图
例:往account.move.line的pivot视图添加字段
fields_arch = '<field name="{}" type="col"/>'.format(fields_name) #拼接xml字段格式 arch = u"""<xpath expr="//field[@name='product_id']" position="after">{}</xpath>""".format(fields_arch) #拼接xpath格式 self.env['ir.ui.view'].create({ 'model': 'account.move.line', #往哪个模型添加 'inherit_id': self.env.ref("weigan_general_ledger.wg_move_line_report_pivot").id, #继承到哪个视图(模块.视图id) 'mode': 'primary', #模式 'arch': arch, #具体操作引进来 })
这样就完全可以实现动态添加字段以及把字段动态添加在某个视图(任意视图都可)
完整代码如下:
@api.model def create(self, vals): res = super(AccountAnalyticDimension, self).create(vals) model = self.env['ir.model'].search([('model', '=', 'account.move.line')], limit=1) fields_name = 'x_wg_%s_id' % (res.model_id.model.replace('.', '_')) new_field = self.env['ir.model.fields'].create({ 'model_id': model.id, 'name': fields_name, 'field_description': res.name, 'ttype': 'many2one', 'relation': res.model_id.model, }) fields_arch = '<field name="{}" type="col"/>'.format(fields_name) arch = u"""<xpath expr="//field[@name='product_id']" position="after">{}</xpath>""".format(fields_arch) self.env['ir.ui.view'].create({ 'model': 'account.move.line', 'inherit_id': self.env.ref("weigan_general_ledger.wg_move_line_report_pivot").id, 'mode': 'primary', 'arch': arch, }) return res
上面的完整代码的例子说明:
在创建这个类(AccountAnalyticDimension)数据完成时,会根据里面数据来动态创建字段,然后把字段添加到pivot视图,即创建一条数据动态添加一个字段然后自动加到视图上。当然,也可以完全创建新的视图,即动态创建完全新的视图
请查阅之前写的文章 - 第一步给模型添加字段
-
odoo中的字段约束
2022-04-14 08:55:54_sql_constraints:是模型类的一个属性,意思是添加一个数据库的约束 值是一个列表套元组形式,每个元祖是一个数据库约束。 元祖的第一个元素是约束名字, 第二个元素是约束规则(postgresql约束规则), 第三个...1. _sql_constraints
_sql_constraints:是模型类的一个属性,意思是添加一个数据库的约束
- 值是一个列表套元组形式,每个元祖是一个数据库约束。
- 元祖的第一个元素是约束名字,
- 第二个元素是约束规则(postgresql约束规则),
- 第三个参数是如果违反约束弹出来的警告信息。
用法如下:
class HrpDepartmentModel(models.Model): _name = 'school.hr.department' _description = '部门信息表' _rec_name = 'dep_name' _sql_constraints = [ ('dep_code_unique', 'unique(dep_code)', '部门编号不能重复'), ('emp_number_check', 'check(emp_number > 0)', '部门员工数量不能为0') ] dep_code = fields.Char(string='部门编号', required=True) dep_name = fields.Char(string='部门名称', required=True) address = fields.Char(string='部门地址') telephone = fields.Char(string='部门电话') emp_number = fields.Integer(string='部门员工数量', default=10)
例如这个元组,就是一个约束
('dep_code_unique', 'unique(dep_code)', '部门编号不能重复')
- dep_code_unique是约束的名称,是元组中的第一个参数
-
'unique(dep_code)', 是约束的规则,可参考下方链接 https://www.imangodoc.com/45029.htmlhttps://www.imangodoc.com/45029.html 括号里面是模型类的字段名称
- 元组中第三个是,提示的信息,效果如下图
其他的约束也是类似的
注意: 在加入约束的时候,最好你的数据库表的数据没有违反该约束的数据,如果有违反的,可以到后台控制台日志里面看到有提示。
-
ODOO12 为已有模型添加字段
2020-09-01 21:25:12为已有表单添加字段是种常见的自定义操作,我们无需创建自定义模块即可在用户界面中进行实现。就我们 To-do 应用而言,需要可以选取一组用户对 To-do 项进行协作。我们可以通过在 partner 表单中添加标识来找到这些... -
【odoo15】在odoo中添加计算字段compute
2022-03-30 20:42:35test_count是一个计算字段 拥有只读属性 代码部分:定义了一个compute名为【_compute_value2】 函数逻辑:在mysale.mysale表里 找到字段name='001'的数量为value2 并替换掉self.value的值 遇到的问题1: ... -
Odoo 页面添加自定义字段
2021-04-08 17:45:39背景:从运营岗位离职到实施岗位,实施过程中前期客户都是爹,odoo背景就不再做介绍,添加字段应该是我岗位的越界了,只是一时好奇进行测试,话不多说开干吧 首先,在我们的销售页面,如果销售页面需要显示客户税号... -
odoo 字段设置权限
2021-08-21 16:38:54odoo14 字段设置权限 1, 在 scurty文件中新增一个xml(res.groups.xml)文件在文件中下写入语句 <odoo> <record id="sale_order_group_price" model="res.groups"> <field name="name">销售... -
odoo15 添加动态字段并显示
2022-03-16 20:53:58mbid.mbcs_code)]) # 创建字段 model = self.env['ir.model']._get(self._name) fields_name = 'x_yqxh5' # %s_id' % (rec.dimension_id.model_id.model.replace('.', '_')) print('modelid',model.id) if fields_... -
odoo selection字段类型的动态添加
2020-06-19 14:43:32Selection字段类型一般作为下拉列表显示 selection的选项内容基本是固定,但 根据权限组显示不同的selection内容的 也可以通过动态创建进行选项内容的设置 1. 常规的Selection内容(固定的) 2. 权限组显示不同的... -
Odoo字段详解
2021-12-15 16:16:18对odoo中的ORM对象字段详细介绍 -
odoo require字段的只读属性设置
2021-04-24 00:01:52今天发现了一个有点奇怪的事,比如name属性为required字段,设置readonly以后,前台在onchange事件改写了字段的值,保存的...2种方法修正,write或者create方法,vals添加self.name值,或者在xml文件字段加一个属性 & -
odoo15 一次动态添加字段的失败经历
2022-03-17 21:51:46多表动态添加至一个临时表上,结果,字段名有重复的,失败 # 临时单项 field中的tree一样不能动态显示,估计是指定的默认tree 需结合ID 根据数据库表名获得单项显示字段 动态生产与显示字段 增加xzlist,配对前面... -
odoo关系字段赋值
2018-04-27 10:00:56这里主要是讲模型write/create 方法字典参数中关系字段(M2O, O2M,M2M字段)的值的写法。M2O: 比较简单,数据库中存的是关系模型的记录id, 是一个整型数值,写法如下: sale_order_line.write({'order_id': order.... -
Odoo 字段设置唯一不重复
2021-11-04 14:10:28一、字段增加唯一约束 前台违反约束效果: 后台模型中定义代码: 括号中三个参数依次是约束定义名、约束定义内容、弹出提醒内容。 在_sql_constraints定义中可以填写多个字段的约束定义,每个用()包裹,之间用... -
【odoo15】在odoo中添加日期与日期时间段
2022-03-29 14:27:36代码部分:添加Date或者Datetime字段即可 视图部分加进去即可: 设置-->翻译-->语言-->chinese-->编辑 *注:格式可以自行修改 -
Odoo二次开发------Odoo常用字段类型
2021-08-02 14:22:46本文将从Odoo模型概述、Odoo的常规字段、自动字段和保留字段、常用字段属性、四个小节进行分享 1、Odoo模型概述 1.1 初识Model odoo中的Model分为三类 models.AbstractModel 抽象模块: 类似于抽象类,常用于... -
Odoo 字段基本属性
2021-01-19 11:32:01gitee代码地址:点击跳转(分支learning_odoo12) ...class odoo.fields.Char() 定义str类型的字段 class odoo.fields.Boolean() 定义布尔类型的字段 class odoo.fields.Integer() 定义数值类型的字段 class odoo.f -
odoo 关系字段操作
2019-12-14 17:29:25o2m与m2m字段操作: (0, 0, values):使用values字段指定的值创建新的记录。 self.book= [(0, 0, { 'book_name': '活着', 'author': '余华', })] ... -
【odoo15】在odoo中添加图像字段 widget=“image
2022-04-08 11:13:31代码:py文件中: image = fields.Binary(string="上传图片") xml文件中: <field name="image" widget="image" class="oe_avatar"/> 重启升级即可。 -
odoo13 字段约束报错,原因:版本改动导致
2019-11-06 13:10:54_sql_constraints = [ ('partner_tax_rate_check', 'check(0 <=tax_rate<= 100)', '税率必须在0-100(%)之间!'), ] 提示错误 语法错误 在 "<=" 或附近的 LINE 1: ...es_partner_partner_tax_rat ... -
Odoo通过外键关联字段
2021-12-15 16:36:24A表想根据外键中B表的字段值变化自动变化 -
ODOO动态创建字段以及动态视图展示
2021-06-18 13:35:44ODOO动态创建字段以及动态视图展示 #动态创建字段以及展示 model = self.env['ir.model']._get('model_name') fields_name = 'x_%s' % (fields_name) if fields_name not in self: new_field = self.env['ir.model... -
odoo中创建一个图片字段
2022-02-16 13:03:23为其定义必需的字段,并添加manifest, init, security等各种声明 # -*- coding: utf-8 -*- from odoo import models, fields, api class ImageURL(fields.Field): type = "imagerul" column_type = ('varchar'... -
Odoo关系字段Eval
2021-01-05 10:58:47Odoo关系字段 多关系字段的写入方法,0-6分别是什么含义? One2many: (0,0,{values}) 根据values里面的信息新建一个记录 (1,ID,{values}),这里的ID是指o2m中的m表的记录ID,更新id=ID的记录 (2,ID),删除id=ID... -
odoo 字段属性
2021-03-31 16:04:53本文对字段属性进行分析记录。 属性名称 格式用途 size 设置文本长度 size=16 string 字段标签 默认取定义 string,否则取字段名,前台可以自定义标签名称 translate 带翻译的字段 translate = True ... -
odoo Selection字段定义 Selection内容创建方式
2020-02-26 18:13:59Selection字段类型一般作为下拉列表显示,selection的选项内容基本是固定,但是针对一些特殊要求,根据权限组显示不同的selection内容的,也可以通过动态创建进行选项内容的设置。 -
odoo自动获取当前日期赋值给字段
2022-02-15 09:50:28我在使用odoo自带的fields.date.today()时出现了一个问题: 我的一个日期字段属性不能实现获取当天的时间,它现在默认获取的程序运行当天的时间,而不是目前的实际时间,感觉很奇怪。 因为不太清楚fields.... -
Odoo field字段标签属性 AND 修改Odoo模块中页面样式
2020-03-18 15:58:491) name:标识字段名称 2)string:标签文本,如果我们想要覆盖模型定义提供的标签文本,可以使用它。 3)help:提示文本,当您将指针悬停在字段上时,将显示一个提示文本,并允许覆盖模型定义提供的帮助文本。 4)...