首页 > 解决方案 > Odoo search_default_product_id 通过在上下文中传递字符串

问题描述

我有一个向导,可以让用户用 field 打开一个记录树product_id

此模型视图有一个带有 field 的 searchview product_id,如下所示:

<record id="view_purchase_product_control_panel_line_search" model="ir.ui.view" >
     <field name="name">view.purchase.product.control.panel.line.search</field>
     <field name="model">purchase.product.control.panel.line</field>
     <field name="arch" type="xml">
         <search>
             <field name="product_id"/>
             <field name="product_name" string="Nome Prodotto"/>
             <field name="numerical_code"/>
         </search>
     </field>
</record>

从向导中,我让用户输入产品名称,这样我就可以打开带有给定字符串的产品过滤器集的树视图。像那样:

def method(self):
   # other stuffs
   return {
    'name': view_name,
    'view_type': 'form',
    'view_mode': 'form,tree',
    'res_model': 'purchase.product.control.panel.line',
    'search_view_id': search_id,
    'domain': [('id', 'in', line_ids)],
    'context': ctx,
    'view_id': False,
    'views': [(tree_id, 'tree'), (form_id, 'form')],
    'type': 'ir.actions.act_window',
}

其中 ctx 是通过这种方法设置的:

@api.multi
def get_product_tree_context_searches(self):
    self.ensure_one()
    ctx = dict()
    if self.name:
        ctx['search_default_product_id'] = self.name
    if self.from_numerical_code:
        ctx['search_default_numerical_code'] = self.from_numerical_code

    return ctx

当我在尝试启动树视图时键入产品的字符串名称时出现了问题。日志说可以将字符串传递给product_idsearchview 字段。但如果我使用 Odoo 搜索视图,我可以输入产品名称并且搜索工作完美。

此时我创建了一个相关字段product_id.name,因此我可以通过该字段搜索产品(存在于搜索视图中)

有什么方法可以传递字符串ctx['search_default_product_id'] = self.name吗?或者唯一的方法是像我一样制作一个相关的字符串字段?

标签: odooodoo-12

解决方案


推荐阅读