具有功能的OpenERP many2one字段

Pri*_*ckZ 0 python xml openerp

我需要创建many2one字段.但它应该根据我的函数逻辑过滤数据.那么如何在OpenERP ver 7中实现它?

我尝试使用下面的代码.但它没有给list.just加载为只读字段:

def _get_users(self, cr, uid, ids, field_name, arg, context=None):
    res = {}
    users_list=[]
    officer_ids = self.search(cr, uid , 'bpl.officer', [('is_user', '=', True)])
    officer_obj = self.browse(cr, uid, officer_ids, context=context)
    for record in officer_obj:
        users_list.append(record.user_id.id) 
    user_obj = self.pool.get('res.users')
    for data in self.browse(cr, uid, ids, context=context):
        res[data.id] = users_list
    return res

_name = "bpl.officer"
_description = "Officer registration details"
_columns = {
    'bpl_company_id':fields.many2one('res.company', 'Company', help='Company'),
    'bpl_estate_id':fields.many2one('bpl.estate.n.registration', 'Estate', help='Estate', domain="[('company_id', '=', bpl_company_id)]"),
    'bpl_division_id':fields.many2one('bpl.division.n.registration', 'Division', help='Division', domain="[('estate_id','=',bpl_estate_id)]"),
    'name': fields.char('Name', size=128, required=True),
    'is_user': fields.boolean('Is User', help="Is System user or not"),
    'user_id': fields.function(_get_users, type="many2one",relation="res.users"),
Run Code Online (Sandbox Code Playgroud)

Oma*_*maL 5

首先,你创建的功能字段是错误的.用户自己就是一个功能领域,你在其中使用了一些魔法(我不明白).请将其更改为many2one字段.

如果要过滤掉某些记录,可以在xml文件中添加域过滤器,在该文件中添加user_id字段.例如,<field name="user_id" domain="[('is_user', '=', True)]"/>如果is_user是res_partner表中的一个字段,那么你可以覆盖该fields_view_get函数并从那里添加指定域.