动态域取决于用户选择(odoo 8)

时间:2015-08-07 08:34:39

标签: python xml python-3.x openerp odoo

我需要什么:

我想为用户创建一个字段以选择合作伙伴类别。在他做完之后我想让他从选定的类别中选择一个合作伙伴。我怎么能做到这一点?

我做了什么:

我有以下几个领域:

partner_categories = fields.Many2one('res.partner.category', string="Partners Categories")
partner_category_name = fields.Char(related='partner_categories.name', string="Choosen category name")
partner_adress = fields.Many2one('res.partner', string="Partner from selected category")

在xml中我有这些行:

<field name="partner_categories"/>
<field name="partner_category_name"/>
<field name="partner_adress" domain="[('res.partner.category','=', 'partner_category_name')]" attrs="{'invisible': [('partner_category_name', '=', 'False')]}"/>

但这不起作用。我收到了错误:

ValueError: Invalid field 'res.partner.category' in leaf "&lt;osv.ExtendedLeaf: ('res.partner.category', 'ilike', 'partner_category_name') on res_partner (ctx: )>"

因为这是正常的,因为我不能继承res.partner模块以便我可以访问其所有字段,因此res.partner.category是我模块的未知字段。但我怎么能实现我的需要呢?

2 个答案:

答案 0 :(得分:2)

如果category_id字段用于res_partner中的设置类别,那么您可以编写..

为此,您需要在视图中编写partner_category ...如果您不想,请将其隐藏。

 <field name="partner_category"/>
 <field name="partner_adress" domain="[('category_id','=',partner_categories)]"/>

答案 1 :(得分:1)

你得到ValueError: Invalid field 'res.partner.category' ...因为'res.partner.category'不是字段,而是模型......就像你在其他问题中所说的一样,你需要使用onchange方法,首先,当用户选择一个触发onchange的类别时,在其中填充另一个字段(partner_adress)按所选类别过滤。让我为您和I'll be back搜索一个很好的例子来编辑这个答案!