OpenERP でいくつかのカスタム オブジェクトを定義しました。これらは、複数の会社の環境で使用されることになっています。したがって、各オブジェクトは「company_id」フィールドを定義します。これですべてのセットアップが完了し、正常に動作します。ただ、ユーザーは新しいオブジェクト インスタンスが属する会社を明示的に選択する必要があるため、UI はあまりユーザー フレンドリーではありません。
company_id フィールドは次のように設定されます。
...
'company_id' : fields.many2one('res.company', string='Company', selection=compute_company_select, required=True)
...
def compute_company_select(self, cr, uid, context):
c_proxy = self.pool.get('res.company')
user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
search = [('id', 'child_of', user.company_id.id)]
if uid == SUPERUSER_ID:
search = [] #superuser can assign any company
ids = c_proxy.search(cr, uid, search, context=context)
return [(c.id, c.name) for c in c_proxy.browse(cr, uid, ids, context=context)]
「compute_company_select」関数の検索ドメインを使用して、フィールド定義でドメイン式を定義するだけで、これを解決することもできます。スーパーユーザーがすべての会社にアクセスできるように構成されていない場合、スーパーユーザーはすべての会社を割り当てることができませんでした。
私が今やりたいことは、彼が新しいレコードを作成するときに、company_id フィールドにユーザーの会社を事前入力することです。そして、これは不可能のようです。静的な値またはモジュール XML で定義された値のいずれかをフィールドに事前入力する可能性をいくつか発見しました。しかし、実行時にのみ利用可能な値、つまり現在のユーザー レコードを使用するオプションはないようです。
OpenERP 6.1 を使用しています。