Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 获取OpenERP中字段的标签名称_Python_Label_Openerp - Fatal编程技术网

Python 获取OpenERP中字段的标签名称

Python 获取OpenERP中字段的标签名称,python,label,openerp,Python,Label,Openerp,如何获取任何模型中字段的标签名称 例如,写这篇文章: obj = self.read(cr,uid,ids)[0] 它将获得给定记录中字段名称(技术名称或数据库列名)及其值的字典 例如,输出是这样的: {'field1': 10, 'field2': 'hello', 'field3': 3.56} 但是它不返回字段的标签,我也不能从这里访问它,因为这里的字段名只是一个字符串 假设有上述领域: _columns = { 'field1': fields.integer('First

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

例如,写这篇文章:

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'),
}
那么我如何才能得到这个结果呢(我知道精确的输出是不可能的,因为标签不是关键,但我只是展示它以更好地理解问题):

因此,我认为检索标签的代码可能如下所示:

for k, v in obj.iteritems():
    print k.label
但没有这样的属性。在fields.py文件中,我在大多数字段类型中看到了
string
命名属性被用作标签的输入,它具有默认输入
string='unknown'
,但我不知道如何在迭代模型中的所有字段时检索它

有人知道怎么做吗


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

有两个表可以使用
ir.model
ir.model.fields
。在第二个选项中,您将使用字段“name”获得“labels”

因此,搜索具有特定模型的字段“到达那里”标签。:)

进一步的问题只需问:)

编辑:例如sale.order,如果我想使用res.partner为m2o关系字段添加所有标签

...
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
...
第二次编辑:在class属性
\u列
中,您将拥有所有字段。所需的属性是
string

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

有两个表可以使用
ir.model
ir.model.fields
。在第二个选项中,您将使用字段“name”获得“labels”

因此,搜索具有特定模型的字段“到达那里”标签。:)

进一步的问题只需问:)

编辑:例如sale.order,如果我想使用res.partner为m2o关系字段添加所有标签

...
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
...
第二次编辑:在class属性
\u列
中,您将拥有所有字段。所需的属性是
string

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

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

只用

._字段()

您将获得字段标签

在odoo控制台中使用dir()可以找到更有用的函数

希望这会有所帮助


谢谢。

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

只用

._字段()

您将获得字段标签

在odoo控制台中使用dir()可以找到更有用的函数

希望这会有所帮助

谢谢。

请执行以下操作:

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}}
这样做:

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}}

您能否编写一个示例,说明如何使用
ir.model.fields
从某个型号检索一个标签?谢谢。只需很少的修复,它就能工作。但是,如果其他人需要类似的东西,最好是修复错误。型号标识行中的第一个,
]
销售后丢失。订单
域。第二次你写了
ttype
。第三,它应该是field.field\u description,因为name返回的是列名,而不是label。另外,也许您会知道。如果我需要内部模型id,而不是外部(如本例所示)。就像我在
sale.order
中写方法一样。也许有更简单的方法从模型内部获取模型id?就像是为了记录你可以浏览的地方?请注意,是
t类型
。奇怪的是他们选择了这样的名字:)我不明白你的问题:/。但另一种获取标签的方法是在我的第二次编辑中。第二种方法更简单。谢谢所以我甚至不需要model_id(我问的问题你说不明白),你能写一个例子,如何使用
ir.model.fields
,从某个模型中检索一个标签吗?谢谢。只需很少的修复,它就能工作。但是,如果其他人需要类似的东西,最好是修复错误。型号标识行中的第一个,
]
销售后丢失。订单
域。第二次你写了
ttype
。第三,它应该是field.field\u description,因为name返回的是列名,而不是label。另外,也许您会知道。如果我需要内部模型id,而不是外部(如本例所示)。就像我在
sale.order
中写方法一样。也许有更简单的方法从模型内部获取模型id?就像是为了记录你可以浏览的地方?请注意,是
t类型
。奇怪的是他们选择了这样的名字:)我不明白你的问题:/。但另一种获取标签的方法是在我的第二次编辑中。第二种方法更简单。谢谢所以我甚至不需要model_id(你说我不明白我在问这个问题)