代码之家  ›  专栏  ›  技术社区  ›  coreuter

访问视图中多个字段的子值

  •  0
  • coreuter  · 技术社区  · 7 年前

    为了能够根据最短使用寿命要求更容易地选择批次/批次,我希望在视图“stock”中的批次号旁边显示变量use_date(模块产品的有效期)的值。查看“pack\u operation\u lot\u form”。

    视图(属于模型stock.pack.operation)定义如下(默认):

    <record id="view_pack_operation_lot_form" model="ir.ui.view">
    <!-- ... -->
        <field name="pack_lot_ids" nolabel="1" attrs="{'readonly': [('state', '=', 'done')]}">
            <tree editable="bottom" decoration-success="qty_todo==qty"
                  decoration-danger="(qty_todo &gt; 0) and (qty&gt;qty_todo)">
                <field name="lot_name" invisible="not context.get('only_create', False)"/>
                <field name="lot_id" invisible="context.get('only_create', False)"
                       domain="[('product_id','=', parent.product_id)]"
                       context="{'default_product_id': parent.product_id, 'active_pack_operation': parent.id}"/>
                <field name="qty_todo"
                       invisible="not context.get('show_reserved') or context.get('serial') or context.get('state_done')"
                       readonly="1"/>
                <field name="qty" invisible="context.get('serial')"/>
                <button name="do_minus" type="object" icon="fa-minus-square" attrs="{'invisible': [('qty', '&lt;=', 0.99)]}"
                        invisible="not context.get('show_reserved') or context.get('state_done')"/>
                <button name="do_plus" type="object" icon="fa-plus-square" attrs="{'invisible': [('plus_visible', '=', False)]}"
                        invisible="not context.get('show_reserved') or context.get('state_done')"/>
                <field name="plus_visible" invisible="1"/>
            </tree>
        </field>
    <!-- ... -->
    </record>
    

    现场 是指“股票”中的一个2many。收拾活动“模型”库存中的批次。收拾“操作”。 '股票。收拾活动lot有一个字段 它被定义为多个“股票”。生产标段''股票生产lot'包含字段 使用_日期

    我的第一次尝试是在点符号中添加字段,如下所示“reference.field\u name”:

    <record id="stock_pack_operation_lots_form_inherit" model="ir.ui.view">
       <field name="name">stock.pack.operation.lots.form.inherit</field>
       <field name="model">stock.pack.operation</field>
       <field name="inherit_id" ref="stock.view_pack_operation_lot_form"/>
       <field name="arch" type="xml">
           <field name="lot_id" position="after">
              <field name="lot_id.use_date"/>
           </field>
       </field>
    </record>
    

    Error context:
    View `stock.pack.operation.lots.form`
    [View_id: 722, xml_id: stock.view_pack_operation_lot_form, model: stock.pack.operation, parent_id: n / a]
    

    然后我发现 this this 发布SO,建议将其定义为子视图:

    <!-- ... -->
    <field name="arch" type="xml">
        <field name="lot_id" position="after">
            <field name="lot_id" nolabel="1">
                <tree>
                    <field name="use_date"/>
                </tree>
            </field>
        </field>
    </field>
    <!-- ... -->
    

    使用_日期 它添加了字段

    任何关于如何添加 使用_日期 感谢批号旁的字段!

    1 回复  |  直到 7 年前
        1
  •  2
  •   Dayana    7 年前

    您可以在模型库存中创建一个相关字段。收拾活动批次:

    use_date = fields.Char(string='Use date', related='lot_id.use_date')
    

    然后您可以将其添加到视图中:

    <!-- ... -->
        <field name="pack_lot_ids" nolabel="1" attrs="{'readonly': [('state', '=', 'done')]}">
            <tree editable="bottom" decoration-success="qty_todo==qty"
                  decoration-danger="(qty_todo &gt; 0) and (qty&gt;qty_todo)">
                <field name="lot_name" invisible="not context.get('only_create', False)"/>
                <field name="lot_id" invisible="context.get('only_create', False)"
                       domain="[('product_id','=', parent.product_id)]"
                       context="{'default_product_id': parent.product_id, 'active_pack_operation': parent.id}"/>
                <field name="use_date" />
                <field name="qty_todo"
                       invisible="not context.get('show_reserved') or context.get('serial') or context.get('state_done')"
                       readonly="1"/>
                <field name="qty" invisible="context.get('serial')"/>
                <button name="do_minus" type="object" icon="fa-minus-square" attrs="{'invisible': [('qty', '&lt;=', 0.99)]}"
                        invisible="not context.get('show_reserved') or context.get('state_done')"/>
                <button name="do_plus" type="object" icon="fa-plus-square" attrs="{'invisible': [('plus_visible', '=', False)]}"
                        invisible="not context.get('show_reserved') or context.get('state_done')"/>
                <field name="plus_visible" invisible="1"/>
            </tree>
        </field>
    <!-- ... -->