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>
    
  • 相关阅读:
    php redis操作
    textarea 文本框根据输入内容自适应高度
    ThinkPHP5 微信接口对接公共类
    ThinkPHP5 excel 导入/导出
    NGUI 学习使用
    Unity3d 背景、音效 播放 简单demo
    Unity3D教程:制作与载入AssetBundle
    BuildPipeline.BuildAssetBundle 编译资源包
    C# 如何将对象写入文件
    unity3d IO操作
  • 原文地址:https://www.cnblogs.com/wtil/p/15114073.html
Copyright © 2011-2022 走看看