【问题标题】:Odoo: get type of field by nameOdoo:按名称获取字段类型
【发布时间】:2017-04-29 09:10:00
【问题描述】:

在 odoo 中,您可以通过它的 str 名称获取字段的值: 例:

  name = getattr(self, 'name')

我现在想知道字段名称的类型是什么:

fields.Char, fields.Many2one, fields.Many2many .....

所以我需要的是这样的东西

 gettype(self, 'user_id')

现在有没有办法知道odoo中的字段类型是什么?

【问题讨论】:

    标签: openerp odoo-8 odoo-9 odoo-10


    【解决方案1】:

    您可以从 ir.model.fields 模型中搜索。

    ir_model_obj=self.env['ir.model.fields']
    ir_model_field=ir_model_obj.search([('model','=',model),('name','=',field)])
    field_type=ir_model_field.ttype
    if field_type=='many2one':
        print "do operation"
    

    这可能会对你有所帮助。

    【讨论】:

      【解决方案2】:

      Odoo 在_fields 属性中提供此信息,我认为这更好,因为每件事都发生在Python 方面,无需联系数据库,尤其是在我的情况下,我的模型有多个30 字段:

       for name, field in self._fields.iteritems():
            if not isinstance(field, (fields.Many2one, fields.Many2many, fields.One2many)):
                 # logic go here
      

      如果您只想验证一个字段:

        if not isinstance(self._fields[field_name], (fields.Many2one, ...)):  # do something
      

      【讨论】:

        猜你喜欢
        • 2013-11-29
        • 1970-01-01
        • 1970-01-01
        • 2017-06-08
        • 2020-11-27
        • 2019-08-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多