如何在python中初始化ir.actions.act_window的参数search_view_id

时间:2019-03-01 06:30:39

标签: python odoo

我通过xml中的按钮调用此python方法

def plots(self):
    self.ensure_one()
    product = self.env['product.product'].search([('product_tmpl_id','=',self.id)])
    domain = [('type', '=', 'is_plot')]
    return {
        'name': _('Plots'),
        'res_model': 'product.template',
        'type': 'ir.actions.act_window',
        'domain': domain,
        'view_mode': 'kanban,tree,form',
        'view_type': 'form',
        'search_view_id': ,
        'help': _('''<p class="oe_view_nocontent_create">
                    Plots of Land....</p>'''),
        'context': "{'default_res_model': '%s','default_res_id': %d}" % (self._name, self.id)
    }

现在我要引用的是这样的xml文件中定义的搜索视图

<record id="view_land_plots_search" model="ir.ui.view">
    <field name="name">land.plot.search</field>
    <field name="model">product.template</field>
    <field name="arch" type="xml">
        <search string="Land Plots">
            <group expand="1" string="Group By">
                <filter string="Stage" name='stage_id' context="{'group_by': 'stage_id'}"/>
            </group>
        </search>
    </field>
</record>

我不知道如何初始化search_view_id。

1 个答案:

答案 0 :(得分:0)

可以使用记录xml_idself.env.ref()方法来引用从Odoo python代码中使用xml创建的任何记录。

在这种情况下,您的搜索视图记录的xml_idyour_module_name.view_land_plots_search。因此,python代码将是:

'search_view_id': self.env.ref('your_module_name.view_land_plots_search').id,
'context': "{'search_default_filter_stage_id': 1}"

别忘了用您的自定义模块目录名称替换your_module_name

<record id="view_land_plots_search" model="ir.ui.view">
    <field name="name">land.plot.search</field>
    <field name="model">product.template</field>
    <field name="arch" type="xml">
        <search string="Land Plots">
            <group expand="1" string="Group By">
                <filter string="Stage" name='filter_stage_id' context="{'group_by': 'stage_id'}"/>
            </group>
        </search>
    </field>
</record>