我知道使用“readonly”属性只读一个字段。是否可以只读取整个记录。这意味着表单中的所有字段都应该只读取条件。
我找到的一个微不足道的方法是在所有文件中使 attrs =“{'readonly':[('state','=','close')]}”形式。
<field name="responsible_id" class="oe_inline" attrs="{'readonly':
<field name="type" attrs="{ 'readonly':[('state','=','close')]}" class="oe_inline"/>
<field name="send_response" attrs="{'readonly':[('state','=','close')]}"/>[('state','=','close')]}"/>
但我不认为这是正确的。我期待某种方式将readonly attribut用于表单。请建议。
在我的示例中,人们可以查看所有记录并仅编辑自己的记录。
谢谢。
答案 0 :(得分:2)
将它放在Python导入中:
from lxml import etree
from openerp.osv.orm import setup_modifiers
并修改fields_view_get
方法中的字段,如下所示:
def fields_view_get(self, cr, uid, view_id=None, view_type=None, context=None, toolbar=False, submenu=False):
res = super(MyClass, self).fields_view_get(cr, uid, view_id=view_id, view_type=view_type,
context=context, toolbar=toolbar, submenu=submenu)
if view_type == 'form':
# Set all fields read only when state is close.
doc = etree.XML(res['arch'])
for node in doc.xpath("//field"):
node.set('attrs', "{'readonly': [('state', '=', 'close')]}")
node_name = node.get('name')
setup_modifiers(node, res['fields'][node_name])
res['arch'] = etree.tostring(doc)
return res
这将修改表单上的每个字段以包含attrs="{'readonly':[('state','=','close')]}"
属性。
答案 1 :(得分:0)
在整个表单上放置一个组,并使用attrs
将其设为只读。