在表单视图中避免以编辑模式打开可以通过以下代码示例解决:
from odoo import models, fields
class MyModel(models.Model):
_name = 'my.model'
name = fields.Char('Name', required=True)
age = fields.Integer('Age')
@api.model
def fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False):
result = super(MyModel, self).fields_view_get(view_id=view_id, view_type=view_type, toolbar=toolbar, submenu=submenu)
if view_type == 'form':
doc = etree.XML(result['arch'])
if not self._context.get('default_edit_mode', False):
# 禁用编辑模式
for node in doc.xpath("//form"):
node.set('edit', 'false')
result['arch'] = etree.tostring(doc, encoding='unicode')
return result
在上面的代码中,我们重写了fields_view_get
方法,并在表单视图中禁用了编辑模式。这是通过将edit
属性设置为false
来实现的。
要使用此代码,只需将其添加到您的模型类中,并在需要避免以编辑模式打开的表单视图中将default_edit_mode
上下文键设置为False
。
例如,如果您想要在创建记录时禁用编辑模式,可以在创建记录的动作中添加以下上下文:
'state': 'new',
'context': {
'default_edit_mode': False,
}
这样,当用户点击创建按钮时,表单视图将以非编辑模式打开。