跳转至内容
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(Flatly)
  • 不使用皮肤
折叠

Odoo 中文社区

  1. 主页
  2. 版块
  3. Odoo 开发与实施交流
  4. 关于<xpath position="attributes"> 的问题

关于<xpath position="attributes"> 的问题

已定时 已固定 已锁定 已移动 Odoo 开发与实施交流
6 帖子 3 发布者 5.7k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • W 离线
    W 离线
    winson97
    写于 最后由 编辑
    #1

    本人遇到一个问题,代码如下:


    <record id="sale_view_order_form" model="ir.ui.view">
                <field name="name">sale.order.form</field>
    <field name="model">sale.order</field>
                <field name="inherit_id" ref="sale.view_order_form"/>
    <field name="arch" type="xml">
        <field name="partner_id" position="after">
          <field name="boatmodel_id" />
        </field>
        <xpath expr="//field[@name='product_id']"  position="attributes">
          <attribute name="context">{'boatmodel_id' : parent.boatmodel_id}</attribute>
        </xpath>
    </field>
    </record>


    问题:跟踪product.product 的search 发现{'boatmodel_id' : parent.boatmodel_id}  没有传给 context
    不知何故?

    context 为:  dict: {u'lang': u'en_US', u'shop': 1, u'tz': u'Asia/Hong_Kong', u'uid': 1, u'pricelist': 1, u'partner_id': 5, u'uom': 1, u'quantity': 1}


    sale.view_order_form 其中代码为:

        <field name="product_id" context="{'partner_id':parent.partner_id, 'quantity':product_uom_qty, 'pricelist':parent.pricelist_id, 'shop':parent.shop_id, 'uom':product_uom}" groups="base.group_user" on_change="product_id_change(parent.pricelist_id, product_id, product_uom_qty, product_uom, product_uos_qty, product_uos, name, parent.partner_id, False, True, parent.date_order, False, parent.fiscal_position, False, context)"/>

    1 条回复 最后回复
    0
    • W 离线
      W 离线
      wangbuke
      写于 最后由 编辑
      #2

      先给一段代码,慢慢体会下。

              <record id="sale_view_order_form" model="ir.ui.view">
                  <field name="name">sale.order.form</field>
                  <field name="model">sale.order</field>
                  <field name="inherit_id" ref="sale_stock.view_order_form_inherit"/>
                  <field name="arch" type="xml">
                      <data>
                          <field name="partner_id" position="after">
                              <field name="boatmodel_id" />
                          </field>
                          <xpath expr="//field[@name='product_id']"  position="attributes">
                              <attribute name="context">{'xxxx':'xxxx', 'partner_id':parent.partner_id, 'quantity':product_uom_qty, 'pricelist':parent.pricelist_id, 'shop':parent.shop_id, 'uom':product_uom}</attribute>
                          </xpath>
                      </data>
                  </field>
              </record> 


      1 条回复 最后回复
      0
      • W 离线
        W 离线
        wangbuke
        写于 最后由 编辑
        #3

        几点说明:

        1、inherit_id 不是 sale.view_order_form,而是 sale_stock.view_order_form_inherit。这是因为sale.view_order_form的 product_id field 被 sale_stock.view_order_form_inherit replace 替换了。

        因此,[color=red]必须继承替换的VIEW ID[/color]。

        2、<data> 标签,表示多个更改,虽然有时不用 data 也可以用,但严重建议遵循官方规范 [检测到链接无效,已移除] br />
        3、<attribute name="context"> 此处值为替换,因此需要把原来的 context 值写上。 如 {'xxxx':'xxxx', 'partner_id':parent.partner_id, 'quantity':product_uom_qty, 'pricelist':parent.pricelist_id, 'shop':parent.shop_id, 'uom':product_uom}



        另外,需要提醒的是:我在测试中发现 [color=red]xpath  只匹配第一个符合的node[/color]  (存疑,待后续求证)

        <xpath expr="//field[@name='product_id']"  position="attributes">

        因此这样只替换了 sale.order.line form view 的 product_id field ,如需替换 sale.order.line tree view 则需另外加一段,如:

                            <xpath expr="//tree/field[@name='product_id']"  position="replace">
                                    。。。。。。
                            </xpath>


        谢谢 !

        1 条回复 最后回复
        0
        • W 离线
          W 离线
          winson97
          写于 最后由 编辑
          #4

          感谢,感谢!

          昨晚也搜索到了 sale_stock.view_order_form_inherit ,试了一下,未果就放弃了。

          大师一出手,说得明明白白,一片 雨过天清 豁然开朗 感觉,苦想两天的问题终于明白了。

          buke,Thanks!


          [attachimg=1]

          附上 sale_stock.view_order_form_inherit 部份代码:

                sale_stock_view.xml

                  <record[color=red] id="view_order_form_inherit"[/color] model="ir.ui.view">
                      [color=blue]<field name="name">sale.order.form.sale.stock</field>[/color]
                      <field name="model">sale.order</field>
                      <field name="inherit_id" ref="sale.view_order_form"/>
                      <field name="arch" type="xml">
                          <data>
                            ......
                            <field name="product_id" position="replace">
                                <field name="product_id"
                                context="{'partner_id':parent.partner_id, 'quantity':product_uom_qty, 'pricelist':parent.pricelist_id, 'shop':parent.shop_id, 'uom':product_uom}"
                                groups="base.group_user"
                                on_change="product_id_change(parent.pricelist_id,product_id,product_uom_qty,product_uom,product_uos_qty,product_uos,name,parent.partner_id, False, True, parent.date_order, product_packaging, parent.fiscal_position, False, context)"/>
                            </field>

          1 条回复 最后回复
          0
          • mrshellyM 离线
            mrshellyM 离线
            mrshelly
            写于 最后由 编辑
            #5

            嗯. xpath 一定要写得唯一才可以.
            xpath 如果不能唯一, 那肯定只对第一个匹配项进行 replace

            另: OpenERP context 传丢已经见惯不惊了.... context 传递的坑粉多....

            1 条回复 最后回复
            0

            • 登录

            • 没有帐号? 注册

            • 登录或注册以进行搜索。
            • 第一个帖子
              最后一个帖子
            0
            • 版块
            • 标签
            • 热门
            • 用户
            • 群组