自从一个星期以来,我就一直无法填充向导,而我完全迷失了这样做的方式。

在不知不觉中,我已经在库存模块上创建了一个自定义按钮,即带有继承模型的view_picking_form记录(请参见views.xml)。我也知道如何创建自定义向导(wizard.py wizard.xml)。

但是我不知道如何用链接到父视图的产品字段product_id,product_qty,qty_done的列表填充它。我正在使用Odoo 10上的新API,无法找到实现此目的的方法。
Odoo总是告诉我它不知道我要传递的字段,向导上什么也没有显示。

有人可以帮我吗?

views.xml

    <?xml version="1.0" encoding="utf-8"?>
    <odoo>
        <data>
            <record id="view_picking_form_inherit" model="ir.ui.view">
                <field name="name">stock.picking.form.inherit</field>
                <field name="model">stock.picking</field>
                <field name="inherit_id" ref="stock.view_picking_form"/>
                <field name="arch" type="xml">

                    <xpath expr="//form/sheet/h1[@class='hidden-xs']" position="inside">
                        <div class="oe_right oe_button_box">

                            <button string="Open Wizard" name="%(action_wizard)d"
                                    type="action" class="oe_button oe_form_button oe_highlight"/>
                        </div>
                    </xpath>
                </field>
            </record>
        </data>
    </odoo>


向导

# -*- coding: utf-8 -*-
from odoo import _, api, fields, models

class MyClass(models.TransientModel):
    _name = 'stock.picking.wizard'
    _inherit = ['stock.picking', 'stock.pack.operation']

    def _default_products(self):
        active_id = self.env.context.get('active_id')
        if active_id:
            product = self.env['stock.picking'].browse(active_id)
            return product.product_id
        return False

    product_id = fields.Many2one('product.product', string='Product', default=_default_products)


向导文件

<?xml version="1.0" encoding="utf-8"?>
<odoo>
    <data>
        <record id="view_wizard" model="ir.ui.view">
            <field name="name">stock_picking_wizard</field>
            <field name="model">stock.picking.wizard</field>
            <field name="arch" type="xml">
                <form string="Stock Products">
                    <field name="picking_id"/>
                    <tree string="Product list">
                        <field name="product_id"/>
                        <field name="product_qty"/>
                    </tree>
                </form>
            </field>
        </record>

        <record id="action_wizard" model="ir.actions.act_window">
            <field name="name">Wizard</field>
            <field name="type">ir.actions.act_window</field>
            <field name="res_model">stock.picking.wizard</field>
            <field name="view_type">form</field>
            <field name="view_mode">form</field>
            <field name="view_id" ref="view_wizard"/>
            <field name="target">new</field>
        </record>
    </data>
</odoo>

最佳答案

您需要通过上下文传递active_id:context =“ {'default_active_id':active_id}”

  <button string="Open Wizard" name="%(action_wizard)d"
                                        type="action" context="{'default_active_id': active_id}" class="oe_button oe_form_button oe_highlight"/>

关于python - Odoo向导:如何从父 View 填充事件字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44396048/

10-12 14:20