【问题标题】:Inherit a model and create new xml file for it in odoo在 odoo 中继承模型并为其创建新的 xml 文件
【发布时间】:2021-11-20 09:20:41
【问题描述】:

我是odoo开发的新手。我必须为继承的模型创建新的xml文件,还需要添加一些额外的字段

我该怎么做?请大家帮帮我

我尝试了下面的程序,但我没有得到继承模型,只创建了新模型。当添加模型名称 stock.picking xml 模型名称时,我得到了继承模型,但我的新字段不存在。真的,我没有不知道具体是怎么做的。

.py 文件是

class LoadingChart(models.Model):
    _inherit = 'stock.picking'
    _name = 'loading.chart'
     _description = "Loading Chart"

    nf_date = fields.Date(string="Loading Date")
    nf_date1 = fields.Datetime(string="Date")
    nf_reference = fields.Char(string="Reference")
    nf_seq = fields.Char(string='Loading Sequence', required=True, copy=False, readonly=True,
                         index=True, default=lambda self: _('New'))

.xml 文件是

<?xml version='1.0' encoding='utf-8'?>
<odoo>
   
        <record model="ir.ui.view" id="nf_unloading_view">
        <field name="name">Loading.chart.tree</field>
        <field name="model">loading.chart</field>
        <field name="arch" type="xml">
            <tree>
                <field name="nf_date"/>
                <field name="nf_date1"/>
            </tree>
        </field>
    </record>

     <record id="stock_picking_form" model="ir.ui.view">
        <field name="name">stock.picking.form</field>
        <field name="model">loading.chart</field>
        <field name="arch" type="xml">
            <form>

                <sheet>
                    <div class='oe_title'>
                        <h1>
                            <field name="nf_seq" readonly="1"/>

                        </h1>
                    </div>
                    <group>
                        <group>
                             <field name="nf_date"/>
                             <field name="nf_date1"/>
                        </group>
                          <group>
                             <field name=" nf_reference"/>
                             
                        </group>
                    </group>

    <record model="ir.actions.act_window" id="loading_chart_action_window">
        <field name="name">loading Chart</field>
        <field name="res_model">loading.chart</field>
        <field name="view_mode">tree,form</field>
    </record>
    <!--*************************MENU*****************************************************-->

    <menuitem id="loading_chart_root_menu" name="Loading Chart"
              parent="stock.menu_stock_warehouse_mgmt" action="loading_chart_action_window" sequence="20"/>

【问题讨论】:

    标签: inheritance odoo development-environment


    【解决方案1】:

    _inherit_name 属性相同,Odoo 会创建一个新的model,查看Classical inheritance 文档了解更多详情:

    当同时使用_inherit_name 属性时,Odoo 会使用现有模型(通过_inherit 提供)作为基础创建一个新模型。新模型从其基础中获取所有字段、方法和元信息(默认值和 al)。

    Extendstock.picking就地(添加功能),不要提供_name然后inherit选股视图来添加新字段。

    示例

    就地继承stock.picking

    class StockPicking(models.Model):
        _inherit = 'stock.picking'
    
        nf_date = fields.Date(string="Loading Date")  
    

    扩展stock.picking树视图:

    <record id="stock_picking_tree" model="ir.ui.view">
        <field name="name">stock.picking.tree</field>
        <field name="model">stock.picking</field>
        <field name="inherit_id" ref="stock.vpicktree"/>
        <field name="arch" type="xml">
            <field name="scheduled_date" position="after">
                <field name="nf_date"/>
            </field>
        </field>
    </record>
    

    扩展stock.picking表单视图:

    <record id="stock_picking_form" model="ir.ui.view">
        <field name="name">stock.picking.form</field>
        <field name="model">stock.picking</field>
        <field name="inherit_id" ref="stock.view_picking_form"/>
        <field name="arch" type="xml">
            <field name="date_deadline" position="after">
                <field name="nf_date"/>
            </field>
        </field>
    </record>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-04
      • 2018-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-22
      • 2019-12-26
      • 1970-01-01
      相关资源
      最近更新 更多