2017-09-16 53 views
0

我正在尝试使用field_view_get函数在字段上添加域。使用doc.xpath查找Many2many中的字段Odoo 10

我需要获取的字段是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 

我怎样才能做到这一点?

回答

-1

终于找到答案了。

@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 
+0

向下投票评论请!!!! – KbiR