获取OpenERP中字段的标签名称

时间:2014-03-20 12:49:59

标签: python label openerp

如何获取任何模型中字段的标签名称?

例如写下这个:

obj = self.read(cr,uid,ids)[0]

它将获取字段名称(技术名称或数据库列名称)及其在给定记录中的值的字典。

因此,例如输出将是这样的:

{'field1': 10, 'field2': 'hello', 'field3': 3.56}

但它没有返回字段标签,我也无法从这里访问它,因为这里的字段名称只是一个字符串。

所以,请说上面提到的这些字段:

_columns = {
    'field1': fields.integer('First Field'),
    'field2': fields.char('Second Field', size=128),
    'field3': fields.float('Third Field'),
}

然后我怎么能得到这个(我知道确切的输出是不可能的,因为标签不是关键,但我只是为了更好地理解问题而展示它):

{'First Field': 10, 'Second Field': 'hello', 'Third Field': 3.56}

所以我认为检索标签的代码看起来像这样:

for k, v in obj.iteritems():
    print k.label

但是没有这样的属性。在fields.py文件中,我在大多数字段类型中看到string命名属性用作标签的输入,标签具有默认输入string='unknown',但我不知道如何在迭代时检索它模型中的所有字段。

任何人都知道怎么做?

P.S。为什么我需要这个?我需要查找其值满足特定条件的字段,然后在其他表中写入该字段标签。我可以编写列名,但是简单的用户需要查看该数据,因此他们需要了解该字段的含义,这就是我需要检索字段标签的原因。

3 个答案:

答案 0 :(得分:6)

您可以使用ir.modelir.model.fields两个表格。在第二个上,您将使用“name”字段获得“标签”。

所以搜索具有特定模型的字段会获得标签。 :)

如有进一步的问题,请问:)

编辑:一个例子可能是sale.order,如果我想要m2o关系字段的所有标签与res.partner

...
model_obj = self.pool.get('ir.model')
imf_obj = self.pool.get('ir.model.fields')
field_label_list = []
model_id = model_obj.search(cr, uid, [('model','=','sale.order')], context=context)
if model_id:
    field_ids = imf_obj.search(cr, uid, [('model_id','=',model_id[0]),('ttype','=','many2one'),('relation','=','res.partner')], context=context)
    if field_ids:
        for field in imf_obj.browse(cr, uid, field_ids, context):
            field_label_list.append(field.field_description)
#do what you want with the list
...

第二次编辑:在类属性_columns,您将拥有所有字段。您所需的属性为string

for field in self._columns.itervalues():
    print field.string

答案 1 :(得分:1)

嗨,我认为在odoo版本11中,它是一项更容易完成的任务。

只需使用

  

._ fields()

,您将获得字段标签。

您可以在odoo控制台中使用dir()找到更多有用的功能。

希望会有所帮助。

谢谢。

答案 2 :(得分:0)

执行以下操作:

self.fields_get('fieldname')

示例:

self.fields_get('phonenumber')

输出将是:

{'phonenumber': {'change_default': False, 'string': u'Phone', 'searchable': True, 'required': False, 'manual': False, 'readonly': False, 'depends': (), 'company_dependent': False, 'sortable': True, 'translate': False, 'type': 'Float', 'store': True}}