使用 onchange 函数在 openerp/odoo 中获取模型名称而不是模型 ID
Get model name instead of model id in openerp/odoo with onchange function
我正在使用 openerp7。我有一个 on_change 函数,可以返回模型 ID。我怎样才能得到模型的名称?
到目前为止,这是我的代码:
_columns={
'model': fields.many2one('ir.model', string='Models'),
'model_name': fields.char('Model name')
}
def onchange_model(self, cr, uid, ids, model, context=None):
print model #gives me back the id of the model(if i choose res.partner it gives me {int}73)
# [...]
<field name="model_name" on_change="onchange(model)"/>
所以我的问题很简单:如何获取模型的名称(例如res.partner)。
检查这是否有效(我没试过但应该有效)
ir_model_obj = self.pool.get('ir.model')
models_ids = ir_model_obj.search(cr, uid, [('id', '=', model)])
for record in ir_model_obj.browse(cr, uid, models_ids, context=context):
_logger.info(record.model) # You get the model here
_logger.info(record.name) # You get the model name here
获取更新版本 (V13)
模型名称是
print(self._name)
其中包含带有 module.model
符号的模块名称。如果你只想要型号名称,你需要做这样的事情:
print(self._name.split('.', 1)[1])
我正在使用 openerp7。我有一个 on_change 函数,可以返回模型 ID。我怎样才能得到模型的名称? 到目前为止,这是我的代码:
_columns={
'model': fields.many2one('ir.model', string='Models'),
'model_name': fields.char('Model name')
}
def onchange_model(self, cr, uid, ids, model, context=None):
print model #gives me back the id of the model(if i choose res.partner it gives me {int}73)
# [...]
<field name="model_name" on_change="onchange(model)"/>
所以我的问题很简单:如何获取模型的名称(例如res.partner)。
检查这是否有效(我没试过但应该有效)
ir_model_obj = self.pool.get('ir.model')
models_ids = ir_model_obj.search(cr, uid, [('id', '=', model)])
for record in ir_model_obj.browse(cr, uid, models_ids, context=context):
_logger.info(record.model) # You get the model here
_logger.info(record.name) # You get the model name here
获取更新版本 (V13)
模型名称是
print(self._name)
其中包含带有 module.model
符号的模块名称。如果你只想要型号名称,你需要做这样的事情:
print(self._name.split('.', 1)[1])