使用 doc.xpath Odoo 10 从 Many2many 中查找字段
Find a field from Many2many using doc.xpath Odoo 10
我正在尝试使用 field_view_get
函数在字段上添加域。
我需要获取的字段在 Many2one 上。
*.xml
<notebook name="appartmentrooms">
<page string="Rooms" name="rooms">
<field name="appartmentrooms_id">
<tree editable="top">
<field name="name" required="1" domain="[('appartment_id','=',parent.name),('state','=','vacant')]" options='{"no_open": True, "no_create": True}'/>
<field name="floor_id" readonly="1"/>
<field name="partner_id" required="1"/>
<field name="state" readonly="1"/>
<field name="partner_ids" widget="many2many_tags"/>
</tree>
</field>
</page>
</notebook>
尝试了以下代码:
if not view_id:
view_id = self.env.ref('appartment.appartment_view_form').id
result = super(Appartments, self).fields_view_get(view_id=view_id, view_type=view_type, toolbar=toolbar, submenu=submenu)
doc = etree.XML(result['arch'])
node = doc.xpath("//field[@name='appartmentrooms_id']/tree/field[@name='partner_ids']")
print'node',node //Prints empty list
我怎样才能做到这一点?
终于找到答案了。
@api.model
def fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False):
result = super(Appartments, self).fields_view_get(view_id=view_id, view_type=view_type, toolbar=toolbar, submenu=submenu)
if view_type =='form':
doc = etree.XML(result['fields']['appartmentrooms_id']['views']['tree']['arch'])
node = doc.xpath("//field[@name='partner_ids']")[0]
node.set('domain', "[('name','=','Customer1')]")
result['fields']['appartmentrooms_id']['views']['tree']['arch'] = etree.tostring(doc)
return result
我正在尝试使用 field_view_get
函数在字段上添加域。
我需要获取的字段在 Many2one 上。
*.xml
<notebook name="appartmentrooms">
<page string="Rooms" name="rooms">
<field name="appartmentrooms_id">
<tree editable="top">
<field name="name" required="1" domain="[('appartment_id','=',parent.name),('state','=','vacant')]" options='{"no_open": True, "no_create": True}'/>
<field name="floor_id" readonly="1"/>
<field name="partner_id" required="1"/>
<field name="state" readonly="1"/>
<field name="partner_ids" widget="many2many_tags"/>
</tree>
</field>
</page>
</notebook>
尝试了以下代码:
if not view_id:
view_id = self.env.ref('appartment.appartment_view_form').id
result = super(Appartments, self).fields_view_get(view_id=view_id, view_type=view_type, toolbar=toolbar, submenu=submenu)
doc = etree.XML(result['arch'])
node = doc.xpath("//field[@name='appartmentrooms_id']/tree/field[@name='partner_ids']")
print'node',node //Prints empty list
我怎样才能做到这一点?
终于找到答案了。
@api.model
def fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False):
result = super(Appartments, self).fields_view_get(view_id=view_id, view_type=view_type, toolbar=toolbar, submenu=submenu)
if view_type =='form':
doc = etree.XML(result['fields']['appartmentrooms_id']['views']['tree']['arch'])
node = doc.xpath("//field[@name='partner_ids']")[0]
node.set('domain', "[('name','=','Customer1')]")
result['fields']['appartmentrooms_id']['views']['tree']['arch'] = etree.tostring(doc)
return result