我想在我的 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] 删除。
我来说两句