今天我们来示范透过继承Model来新增Field和更改Views里面的属性,用这种方法可以省去自己建立一个Module,并且可以直接使用内部方法。
我们以增加一个栏位,在company底下增加预算栏位
增加 /models/res_company.py
# -*- coding: utf-8 -*-
from odoo import models, fields, api, _
class Company(models.Model):
_inherit = 'res.company'
budget = fields.Monetary(string="Budget")
我们只要继承res.company
,并且增加想要的栏位即可,栏位会增加在res_company的表里面,记住不要设定model name否则会新增另一张表。
汇入刚刚写的model在/models/init.py
from . import res_company
新增档案 /views/res_company_views.xml
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="view_company_form_inherit_gary" model="ir.ui.view">
<field name="name">res.company.form.inherit.gary</field>
<field name="model">res.company</field>
<field name="inherit_id" ref="base.view_company_form" />
<field name="arch" type="xml">
<xpath expr="//notebook/page/group/group/field[@name='website']" position="after">
<field name="budget"/>
</xpath>
<xpath expr="//notebook/page/group/group/field[@name='vat']" position="attributes">
<attribute name="invisible">1</attribute>
</xpath>
</field>
</record>
</odoo>
我们透过xpath去寻找website field位置,并用 after
就会把插入的field放在website之後,除此之外,下面也写一个用attributes
的范例,可以修改特定的field属性,其他还有before
、replace
用法。
将views加入__manifest__.py里
'data': [
'views/res_company_views.xml',
...
]
重启後并更新模组後,我们就可以看到新增栏位,vat栏位也消失不见了。
今天介绍就到这里,只要参照这个流程就能轻易的扩增想要的Model。
>>: [DAY-23] 有声 无声 在不同模式下 有效沟通
什麽是 Middleware? Middleware 是一种执行於路由处理之前的函式,可以存取请求物...
动态模型我们会使用 LSTM-based 架构,并分成两种: Basic LSTM Last-fra...
As title,今天要来探讨的话题就是学渣到底能不能念研究所呢? 这个问题的答案在台湾几乎是 No...
这边想说一下,关於上一篇有讲到我利用superagent()来获得网站资讯,结果抓取失败。这是因为不...
1.add report 2.add dataset 3.edit param be mulit 2...