首页 > 解决方案 > 如何在openerp的函数中使用many2one字段

问题描述

如何在函数中使用 many2one 字段?

这是我的代码:

def _get_unit(self, cr, uid, ids, fields,arg, context=None):
res = {}
list_data = []
for record in self.browse(cr, uid, ids,unit):
    list_data.append(record[unit.id])
    return super(learning_course, self)._get_unit(cr, uid, ids, context=context)

_columns = {

'unit': fields.many2one('hr.department', 'unit'),

'department': fields.function(_get_unit, string='department' , store=True ,type='many2one' ,relation='hr.department'),

}

def onchange_user(self, cr, uid, ids, user_id, context=None):
    unit = False
    if user_id:
        unit = self.pool.get('res.users').browse(cr, uid, user_id, context=context).context_department_id.id
        return {'value': {'unit' : unit  }}
    return {'value': {} }

但我收到此错误:

用于 self.browse(cr, uid, ids,unit) 中的记录:AttributeError: 'browse_record_list' 对象没有属性 'id'

我应该怎么办?

标签: odoo

解决方案


def _get_unit(self, cr, uid, ids, prop, unknow_none, context=None):
res = {}
for record in self.browse(cr, uid, ids):
    res [record.id] = record.user_id.context_department_id.id
    return res

_columns = {
'user_id': fields.many2one('res.users', 'user', readonly=True),
'unit_id': fields.function(_get_unit, string='dep' , store=True ,type='many2one',relation='hr.department'),

}


推荐阅读