具有两个值的OpenERP函数Many2One(如Value1 | Value2)

时间:2013-09-19 09:38:04

标签: function field openerp

由于Many2one字段只显示一个字段,我想写了一个函数在Many2one两个字段中显示,就像这样:

def get_services(self, cr, uid, ids, context=None):
        values = cr.execute("""SELECT name, entity
                            FROM services WHERE id = 3""")
        values.fetchall()
        for value__ in values:
            if value__:
                return {'value': {'service_id': value__[0] + " | " + value__[1]},} # Example: "Service 1 | Google"

首先,有可能吗?有没有这样做的模块?所以我可以看到它。

然后,我用这种方式调用函数:

_columns = {
        'service_id':fields.function(get_services, type = 'many2one', obj = 'services_getservices_function', method = True, string = 'Service'),

我没有收到任何错误,但屏幕上没有显示该字段。

2 个答案:

答案 0 :(得分:1)

您需要在服务模型上覆盖name_get

请参阅https://doc.openerp.com/trunk/server/api_models/#openerp.osv.orm.BaseModel.name_get

答案 1 :(得分:0)

解决。

我创建了另一个包含名称和实体的字段。

'name_plus_entity':fields.char('All', size = 300),

然后我创建了一个“onchange”函数,所以只要字段'name'或字段'entity'被更改,字段'name_plus_entity'就会得到:'name'+“|”+ entity。

另外,我以XML格式隐藏字段'name_plus_entity'。