我通过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。
答案 0 :(得分:0)
可以使用记录xml_id
和self.env.ref()
方法来引用从Odoo python代码中使用xml创建的任何记录。
在这种情况下,您的搜索视图记录的xml_id
是your_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>