Day22 Let's ODOO: 继承Model来增加栏位

今天我们来示范透过继承Model来新增Field和更改Views里面的属性,用这种方法可以省去自己建立一个Module,并且可以直接使用内部方法。

我们以增加一个栏位,在company底下增加预算栏位

  1. 增加 /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否则会新增另一张表。

  2. 汇入刚刚写的model在/models/init.py

    from . import res_company
    
  3. 新增档案 /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属性,其他还有beforereplace 用法。

  4. 将views加入__manifest__.py里

    'data': [
    	'views/res_company_views.xml',
    	...
    ]
    

重启後并更新模组後,我们就可以看到新增栏位,vat栏位也消失不见了。

https://ithelp.ithome.com.tw/upload/images/20211007/20130896Fn9n8GzULk.png
今天介绍就到这里,只要参照这个流程就能轻易的扩增想要的Model。


<<:  Day 22: Informix(3)

>>:  [DAY-23] 有声 无声 在不同模式下 有效沟通

[NestJS 带你飞!] DAY11 - Middleware

什麽是 Middleware? Middleware 是一种执行於路由处理之前的函式,可以存取请求物...

Day26 - 动态模型 part1 (LSTM)

动态模型我们会使用 LSTM-based 架构,并分成两种: Basic LSTM Last-fra...

学渣也能念研究所吗

As title,今天要来探讨的话题就是学渣到底能不能念研究所呢? 这个问题的答案在台湾几乎是 No...

网站不想你爬

这边想说一下,关於上一篇有讲到我利用superagent()来获得网站资讯,结果抓取失败。这是因为不...

[Report] 怎麽让筛选条件可以复选

1.add report 2.add dataset 3.edit param be mulit 2...