• odoo模型和视图的继承


    manifest.py

    因为使用的是继承,所以需要在文件里指定所依赖的模块也就是继承的模块

    {
        'name': '中国地址',  # 模块名
        'version': '1.0',  # 模块版本
        'summary': '中国地址',  # 模块简介
        'sequence': 2,  # 模块排序
        'description': """
            中国地址
            """,  # 模块介绍
        'author': 'til',  # 模块作者
        'website': 'til',  # 模块站点
        
        'depends': ['base', 'base_address_city'], # 依赖的包,base是必须依赖的,base_address_city是这次继承需要的包
    
        'data': [
    
            'views/res_city_view.xml',
            'views/menu_view.xml'
    
        ],  # 模块用的到数据 视图、权限等
        'application': True,  # 是否作为独立的app存在
    
    }
    

    model文件

    from odoo import models
    
    
    class City(models.Model):
        # 继承对于的model
        _inherit = 'res.city'
    
    

    视图文件

    视图文件不是非要写在一个xml里,可以分开多个。只需要在__manifest__.py文件中指明需要的xml文件就行,注意一点__manifest__.py中的data配置xml文件时是有先后顺序的,如果前面的xml依赖到后面的xml就会报错

    • tree视图和动作视图
    <?xml version="1.0" encoding="UTF-8" ?>
    <odoo>
        <record id="china_city_tree_view" model="ir.ui.view">
            <field name="name">城市信息</field>
            <field name="model">res.city</field>
    <!--        继承的视图 name固定写法 ref继承的视图-->
            <field name="inherit_id" ref="base_address_city.view_city_tree"/>
            <field name="arch" type="xml">
    <!--            使用xpath选中需要重写或者覆盖的节点,这里选中的tree节点,如果写了replace就是覆盖,如果不写默认是添加
    
                    position可选内容
                    1.after: 在匹配元素之后, 与匹配元素具有相同的父元素;
                    2.befor: 在匹配元素之前, 与匹配元素具有相同的父元素;
                    3.inside(默认值): 作为匹配元素内容;
                    4.replace: 替换匹配元素的内容, 如果值为空将会删除匹配的元素;
                    5.attributes: 修改匹配元素的属性.
    
                    attributes 的用法 下面这段表示了,我要将选中节点的invisible属性改为1
                    <field name="active" position="attributes">
                         <attribute name="invisible">1</attribute>
                    </field>
    
    -->
                <xpath expr="//tree" position="replace">
                    <tree>
                        <field name="name"/>
                        <field name="zipcode"/>
                        <field name="country_id"/>
                    </tree>
                </xpath>
            </field>
    
        </record>
        <record id="china_city_act_window" model="ir.actions.act_window">
            <field name="name">城市信息</field>
            <field name="res_model">res.city</field>
            <field name="view_mode">tree,form</field>
        </record>
    </odoo>
    
    • 菜单视图
    
    <?xml version="1.0" encoding="UTF-8" ?>
    
    <odoo>
    
        <menuitem name="城市信息" id="china_city_menu_root" sequence="13"/>
        <menuitem name="城市信息" id="sec_china_city_menu" parent="china_city_menu_root"
        action="china_city_act_window" sequence="13"
        />
    
    </odoo>
    
  • 相关阅读:
    OpenCV+Python车牌字符分割和识别入门
    加载多卡训练的预训练模型Default process group has not been initialized, please make sure to call init_process_
    人脸识别数据集的采集
    显式转换和隐式转换
    Python经典机器学习的四大常用的第三方库
    kvm管理工具
    openstack+kvm还是k8s+docker ?
    Python Web开发常用的第三方库有哪些
    关于yum不能正常使用的解决方案
    升级centos正确姿势
  • 原文地址:https://www.cnblogs.com/wtil/p/15114073.html
Copyright © 2020-2023  润新知