zoukankan      html  css  js  c++  java
  • 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>
    
  • 相关阅读:
    linux 命令——19 find (转)
    linux 命令——18 locate (转)
    linux 命令——17 whereis(转)
    linux 命令——16 which(转)
    linux 命令——15 tail (转)
    linux 命令——14 head (转)
    Java for LeetCode 038 Count and Say
    Java for LeetCode 037 Sudoku Solver
    Java for LeetCode 036 Valid Sudoku
    Java for LeetCode 035 Search Insert Position
  • 原文地址:https://www.cnblogs.com/wtil/p/15114073.html
Copyright © 2011-2022 走看看