我创建了向导。按下按钮,我想打开具有特定模型记录ID的表单视图。
@api.multi
def create_order(self):
view = self.env.ref('purchase.purchase_order_form')
context = self.env.context
return {
'name':'Name',
'type': 'ir.actions.act_window',
'view_type': 'form',
'view_mode': 'form',
'res_model': 'purchase.order',
'views': [(view.id, 'form')],
'view_id': view.id,
'res_id': 264,
'context': context,
}
问题是按钮点击后我无法打开其他表单视图。
如果我添加' target':' new',然后点击弹出窗口,我打开表单,我需要:
@api.multi
def create_order(self):
view = self.env.ref('purchase.purchase_order_form')
context = self.env.context
return {
'name':'Name',
'type': 'ir.actions.act_window',
'view_type': 'form',
'view_mode': 'form',
'res_model': 'purchase.order',
'views': [(view.id, 'form')],
'view_id': view.id,
'target': 'new',
'res_id': 264,
'context': context,
}
问题是按钮点击时我需要打开特定的表单,但是像弹出窗口一样。 我尝试过设置' target':' inline'或者'目标':'当前'但没有任何事情发生..
答案 0 :(得分:0)
我认为问题将存在于你的param res_id中,实际上并不需要。它只返回res_id的记录,如果存在的话。无论如何我给你一个有效的例子。所以请尝试:
return {
'name': _('Compose Email'),
'type': 'ir.actions.act_window',
'view_type': 'form',
'view_mode': 'form',
'res_model': 'mail.compose.message',
'views': [(compose_form.id, 'form')],
'view_id': compose_form.id,
'target': 'new',
'context': ctx,
}
答案 1 :(得分:0)
这是从哪个模型/记录调用的?例如,您是将其添加到销售订单还是其他某种型号的表单?
如果是这样,您可能需要设置包含源模型,例如:
'src_model': 'sale.order',
在documentation中,这用于启动向导,重定向模型需要可能。
答案 2 :(得分:0)
在简单解决方案的回应结束时看到
我遇到了同样的问题,但我能够解决它。我必须说我使用的是旧的OpenERP版本(5.0.14),所以它可能不适合你。
model_obj = self.pool.get('ir.model.data')
res_id = model_obj.get_object_reference(cursor, uid,
'your_model',
'your_view_id_ref_defined_in_xml')[1]
return {
'name': 'View name, anything you want',
'type': 'ir.actions.act_window',
'res_model': 'view_model',
'domain': "[('id', 'in', {})]".format(ids_to_show),
'view_type': 'form',
'view_id': (res_id, 'View'),
}
使用问题示例,它将是:
model_obj = self.pool.get('ir.model.data')
res_id = model_obj.get_object_reference(cursor, uid,
'purchase',
'purchase_order_form')[1]
return {
'name': 'View name, anything you want',
'type': 'ir.actions.act_window',
'res_model': 'purchase.order',
'view_type': 'form',
'view_id': (res_id, 'View'),
}
希望它有所帮助!
SIMPLER SOLUTION
另一种更简单,更简洁的解决方案是将view_id设置为False并设置要在上下文中加载的视图。您可以使用&#39; tree_view_ref&#39; 指定要为树部件加载的视图,使用&#39; form_view_ref&#39; 指定表单部件。< / p>
以下示例加载名为 custom_stock 的模块中定义的名为 custom_stock_tree_view 和 custom_stock_form_view 的视图
return {
'name': 'Custom Stocks',
'view_type': 'form',
'view_mode': 'tree,form',
'res_model': 'stock.move',
'view_id': False,
'type': 'ir.actions.act_window',
'context': {
'tree_view_ref':
'custom_stock.custom_stock_tree_view',
'form_view_ref':
'custom_stock.custom_stock_form_view'
}
}
请注意,view_id设置为False。否则它将无法加载所需的视图(感谢Joan M. Grande,他看到了这一点)。