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

Dynamic domain depending on user selection (odoo 8)

我需要的:

我想为用户创建一个字段以 select 一类合作伙伴。在他做出决定后,我想让他 select 成为 selected 类别的合作伙伴。我怎样才能做到这一点?


我做了什么:

我有休耕地:

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 是我模块的未知字段。但是我怎样才能达到我所需要的呢?

你得到 ValueError: Invalid field 'res.partner.category' ... 因为 'res.partner.category' 不是一个字段,它是一个模型...由于你在另一个 Q 中说过,你需要使用 onchange方法,首先当用户 select 类别触发 onchange 时,在其中填充另一个字段 (partner_adress) 按类别 selected 过滤。让我为您搜索一个很好的示例,然后 I'll be back 编辑此答案!

如果 category_id 字段用于 res_partner 中的集合类别那么你可以写..

为此,您需要在视图中写入 partner_category...如果您不想,则将其设置为不可见。

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