How to make the whole record readonly in openerp7
我知道使用"只读"属性将字段设为只读。是否可以将整个记录设为只读。这意味着表单中的所有字段都应在某个条件下为只读。
我发现的一种微不足道的方法是让这个 attrs="{\\'readonly\\':[(\\'state\\',\\'=\\',\\'close\\')]}" 在所有表格中存在的文件。
1 2 3 | <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')]}"/> |
但是我不认为这是正确的。我希望有某种方法可以为表单设置通用的只读属性。请建议。
在我的示例中,人们可以查看所有记录并仅编辑他们自己的记录。
谢谢。
把它放在你的 Python 导入中:
1 2 | from lxml import etree from openerp.osv.orm import setup_modifiers |
并像这样修改
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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 |
这将修改表单上的每个字段以包含
在整个表单上放置一个组并使用