首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Odoo自定义:联系人视图中的Many2one字段,仅显示当前显示的公司的个人

基础概念

Odoo是一个开源的企业资源规划(ERP)系统,它使用Python和XML来定义模型和视图。在Odoo中,Many2one字段用于建立两个模型之间的一对多关系。例如,一个公司可以有多个联系人,但一个联系人只能属于一个公司。

相关优势

  1. 灵活性:Odoo的Many2one字段允许开发者灵活地定义模型之间的关系。
  2. 数据完整性:通过Many2one字段,可以确保数据的完整性和一致性。
  3. 用户友好:在视图中,Many2one字段通常以选择框的形式呈现,用户可以方便地选择相关记录。

类型

Many2one字段在Odoo中是一种标准字段类型,用于表示一对多关系。

应用场景

在Odoo中,Many2one字段广泛应用于各种场景,例如:

  • 公司和联系人之间的关系
  • 产品和客户之间的关系
  • 订单和客户之间的关系

问题描述

在Odoo中,如果你希望在联系人视图中,Many2one字段仅显示当前显示的公司的个人,可以通过以下步骤实现:

解决方案

  1. 定义模型关系: 首先,确保你的模型定义了正确的关系。例如:
  2. 定义模型关系: 首先,确保你的模型定义了正确的关系。例如:
  3. 自定义视图: 在联系人视图中,使用domain属性来限制Many2one字段的显示范围。例如:
  4. 自定义视图: 在联系人视图中,使用domain属性来限制Many2one字段的显示范围。例如:
  5. 在这个例子中,active_id是当前显示的公司ID。

示例代码

假设你有一个公司模型和一个联系人模型,并且你想在联系人视图中仅显示当前公司的联系人。以下是完整的示例代码:

模型定义

代码语言:txt
复制
from odoo import models, fields

class Company(models.Model):
    _name = 'res.company'
    _description = 'Company'

    name = fields.Char(string='Company Name')
    contact_ids = fields.One2many('res.partner', 'company_id', string='Contacts')

class ResPartner(models.Model):
    _inherit = 'res.partner'

    company_id = fields.Many2one('res.company', string='Company')

视图定义

代码语言:txt
复制
<record id="view_partner_form_inherit" model="ir.ui.view">
    <field name="name">res.partner.form.inherit</field>
    <field name="model">res.partner</field>
    <field name="inherit_id" ref="base.view_partner_form"/>
    <field name="arch" type="xml">
        <xpath expr="//field[@name='company_id']" position="attributes">
            <attribute name="domain">[('id', '=', active_id)]</attribute>
        </xpath>
    </field>
</record>

参考链接

通过以上步骤,你可以在Odoo的联系人视图中,确保Many2one字段仅显示当前显示的公司的个人。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的视频

领券