这里我需要一些帮助,所以odoo在stock.picking模型中有一个默认的表单视图。其中表单用于外出、内部和传入类型的拾取。因此,我为这些类型创建了几个不同的视图,但是如果通过many2one链接打开表单,会导致默认的表单视图,那么如何更改默认的表单视图呢?我尝试过使用fields_view_get函数,但是它不能工作,因为它无法从stock.picking获得id。下面是我在fields_view_get模型中创建的stock.picking函数:
@api.model
def fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False):
if view_type == 'form':
if self.picking_type_id.code == "outgoing":
view_id = self.env.ref('gg_warehouse.wh_os_outgoing_form').id
if self.picking_type_id.code == "incoming":
view_id = self.env.ref('gg_warehouse.wh_os_incoming_form').id
if self.picking_type_id.code == "internal":
view_id = self.env.ref('gg_warehouse.wh_os_transfer_form').id
return super(StockPickingInherit2, self).fields_view_get(view_id=view_id, view_type=view_type, toolbar=toolbar, submenu=submenu)实际上,我已经设法使用上下文fields.Many2one从{'form_view_ref': 'my_module.new_custom_form_view'}打开了一个新表单,但是如果刷新页面,它将返回到默认的odoo视图。这就是为什么我想替换odoo的默认视图。
发布于 2022-09-19 08:49:56
当请求视图时,将使用优先级最低的视图。
客户端程序可以通过id或(模型,类型)请求视图。对于后者,将搜索正确类型和模型的所有视图,
and the one with the lowest priority number will be returned (it is the “default view”)。
可以使用优先级字段使自定义视图成为默认视图。
默认选股表单视图优先级设置为12,要使您的视图成为默认视图,请将优先级值设置为小于12的数字。
示例:
<record id="view_picking_form" model="ir.ui.view">
<field name="name">stock.picking.form</field>
<field name="model">stock.picking</field>
<field eval="11" name="priority"/>
<field name="arch" type="xml">
</field>
</record>备注
在fields_view_get函数中,self是一个空记录集,这意味着您不能使用字段值。
self.picking_type_id.code将被计算为False,所有条件都是False,Odoo不会设置view_id
发布于 2022-09-19 06:25:11
我的意思是,如果使用相同的ID,Odoo将替换旧的ID,并替换为新的id,例如:添加具有相同id形式的新记录:
view_picking_form
<record id="view_picking_form" model="ir.ui.view">
<field name="name">stock.picking.form</field>
<field name="model">stock.picking</field>
<field eval="12" name="priority"/>
<field name="arch" type="xml">
.......
</record>https://stackoverflow.com/questions/73768392
复制相似问题