0

「読み取り専用」属性を使用してフィールドを読み取り専用にすることを知っています。レコード全体を読み取り専用にすることは可能ですか。つまり、フォーム内のすべてのフィールドは条件付きで読み取り専用にする必要があります。

私が見つけた重要でない方法の 1 つは、フォームに存在するすべてのフィールドでこの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')]}"/>

しかし、私はこれが正しいとは思いません。フォームに共通の読み取り専用属性を配置する方法を期待しています。よろしくお願いします。

この例では、ユーザーはすべてのレコードを表示でき、自分のレコードのみを編集できます。

ありがとうございました。

4

2 に答える 2

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')]}"属性を含むように変更されます。

于 2014-11-24T16:02:36.877 に答える
0

フォーム全体にグループを配置し、それを使用attrsして読み取り専用にします。

于 2013-08-27T05:54:11.207 に答える