使用 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