【问题标题】:Domain in xml odoo 10xml odoo 10 中的域
【发布时间】:2018-11-05 15:28:05
【问题描述】:

我想在我的 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”。

你能给我解释一下吗?

谢谢

【问题讨论】:

    标签: python odoo


    【解决方案1】:

    您不能从 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)]" />
    

    【讨论】:

    • 好的,具体怎么做?你有一个例子吗?谢谢
    • 感谢您的回复。但是,当我保存表单时,出现错误(与我的模型“res.partner”相比,字段为空,因为它是必填字段)。有办法解决吗?
    • 很好!问题不在模型 "res.partner" 中,在我看来 XML 中未正确配置必填字段。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-24
    相关资源
    最近更新 更多