简体   繁体   English

我如何从 one2many 字段制作的树视图中获取数据并将其设置为 odoo 15 中另一个字段的 onchange function?

[英]How can i fetch data from tree view made by one2many fields and set it as an onchange function for another field in odoo 15?

I have inherited res.partner model and added my own one2many fields which is shown below:我继承了 res.partner model 并添加了我自己的 one2many 字段,如下所示:

from odoo import api, fields, models


class CustomContacts(models.Model):
_inherit = "res.partner"

x_brand_ids = fields.Many2many('res.partner.line', 'x_brand_id', string="Brand Name")
x_model_ids = fields.One2many('res.partner.line', 'x_model_id', string="Model Name")
x_customer_ids = fields.One2many('res.partner.line', 'x_customer_id', string="Vehicle Details")


class CustomContactsPage(models.Model):
_name = "res.partner.line"

x_customer_id = fields.Many2one('res.partner', string="Vehicle Details")
x_brand_id = fields.Many2one('vehicle.brand', string="Brand Name")
x_model_id = fields.Many2one('vehicle.model', string="Model Name")
x_vehicle_number_id = fields.Char(string="Vehicle Number")

Its related views:其相关观点:

<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="view_partner_form_inherited" model="ir.ui.view">
    <field name="name">res.partner.inherited</field>
    <field name="model">res.partner</field>
    <field name="inherit_id" ref="base.view_partner_form"/>
    <field name="arch" type="xml">
        <xpath expr="//page[@name='internal_notes']" position="after">
            <page string="Vehicle Details">
                    <field name="x_customer_ids">
                        <tree editable="bottom">
                            <field name="x_brand_id"/>
                            <field name="x_model_id"/>
                            <field name="x_vehicle_number_id"/>
                        </tree>
                    </field>
            </page>
        </xpath>
    </field>
</record>
</odoo>

Now i have inherited sale.order model & added 3 fields in it:现在我继承了 sale.order model 并在其中添加了 3 个字段:

from odoo import api, fields, models


class CustomSaleOrder(models.Model):
_inherit = "sale.order"


vehicle_brand = fields.Char(string='Vehicle Brand')
vehicle_model = fields.Char(string='Vehicle Model')
vehicle_number = fields.Char(string='Vehicle Number')

Its related views:其相关观点:

<?xml version="1.0" encoding="utf-8"?>

<odoo>

<record id="sale_order_inherited" model="ir.ui.view">
    <field name="name">sale.order.inherited</field>
    <field name="model">sale.order</field>
    <field name="inherit_id" ref="sale.view_order_form"/>
    <field name="arch" type="xml">
        <xpath expr="//field[@name='partner_id']" position="after">
                            <field name="vehicle_brand"/><field name="vehicle_model"/><field name="vehicle_number"/>
        </xpath>
    </field>
</record>

</odoo>

Now partner_id field is already there in sale.order which indicates the customer name, so how can i create a onchange function through which when i select customer(partner_id) it shows vehicles belongs to that customer??现在 partner_id 字段已经存在于 sale.order 中,它表示客户名称,那么我如何创建一个 onchange function 通过它当我 select 客户(partner_id)它显示车辆属于该客户?

Insted of creating new char fields of vehicle details you can add single related field into sale.order model.为了创建车辆详细信息的新字符字段,您可以将单个相关字段添加到 sale.order model 中。

vehicle_ids = fields.One2many(related='partner_id.x_customer_ids' string='Vehicles')

And in Sale order form view you can add page for vehicle list.在销售订单表单视图中,您可以添加车辆列表页面。

<page string='Vehicle List'>
    <field name='vehicle_ids'>
        <tree>
            <field name='x_brand_id'/>
            <field name='x_model_id'/>
            <field name='x_vehicle_number_id'/>
        </tree>
    </field>
</page>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM