xml odoo 10 中的域

伪WithK

我想在我的 xml 字段中使用域过滤器,如下所示:

domain="[('id','>=',field)]"

但是,我不明白它是如何工作的!

这是我的领域:

    responsible_partner = fields.Many2one(string="Responsible",
                                          comodel_name="res.partner",
                                          ondelete='restrict',
                                          domain="[('company_type','=','person')]",
                                          delegate=False)
    responsible_foyer = fields.Many2one(string="Foyer responsible", comodel_name="horanet.relation.foyer", copy=False)

这是我的表单视图 XML :

   <field name="responsible_partner" required="True" domain="[('id','=',responsible_foyer.partner_id)]" />
   <field name="responsible_foyer" />

这是我的功能:

@api.onchange('partner_id')
def _get_active_foyer(self):
    if self.partner_id:
        actually_partner_id = self.partner_id.name
        if actually_partner_id:
            records_foyer_id = self.env['horanet.relation.foyer'].search([('partner_id', '=', actually_partner_id)])

            for rec_foyer in records_foyer_id:
                if rec_foyer.foyer_id:
                    records_partner_id = self.env['horanet.relation.foyer'].search(
                        [('foyer_id', '=', rec_foyer.foyer_id.id)])
                    for rec_partner in records_partner_id:
                        if rec_partner.partner_id:
                            self.responsible_partner = rec_partner.partner_id.id
                            self.responsible_foyer = rec_partner.id
                            # self.test_foyer = rec_partner.foyer_id.id
                            print self.test_foyer 

错误 :

错误:AttributeError:对象没有属性“partner_id”

但是,我的模型中有字段 partner_id:“horanet.relation.foyer”。

你能给我解释一下吗?

谢谢

詹姆士

您不能从 XML 访问子记录(即点之后的部分)。您只能引用表单本身中的字段,因此您必须创建一个新的相关字段以获得所需的值,然后将其作为不可见字段添加到表单中,然后您可以将其用作域的一部分。

编辑:详细解决方案如下:

您可以在 Python 代码中添加相关字段,如下所示:

responsible_foyer_partner_id = fields.Many2one('res.partner', related="responsible_foyer.partner_id", string="Responsible Foyer Partner")

然后在您的 XML 中,您可以将此字段添加到表单视图中,但保持不可见。这将允许您在您的域中使用它,但不会让它在表单视图中变得混乱。

<field name="responsible_foyer_partner_id" invisible="1"/>

现在您可以在您的域中使用此字段

<field name="responsible_partner" required="True" domain="[('id','=',responsible_foyer_partner_id)]" />

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章