10 fields_get 方法的使用


odoo models.Model 中 预置了很多的基本字段,比如 create_date, write_date 等等,odoo的 筛选和分组会默认使用这些字段,并且有时候可能是英文的,那么我们要如何处理这些字段呢?(如下图)

我们可以做在odoo预置的方法 fields_get中进行处理,fields_get方法在每次进入tree视图的时候回执行,实现格式如下:

  1. @api.model
  2. def fields_get(self, allfields=None, attributes=None):
  3. res = super(OkrManageLine, self).fields_get(allfields, attributes)
  4. for key, value in res.items():
  5. if key == 'create_date':
  6. res[key]['string'] = '创建时间'
  7. elif key == 'write_date':
  8. res[key]['string'] = '最后更新时间'
  9. return res

调用父类fields_get的返回值是议程字典,我们可以通过判断字段的名称对其在筛选和分组中的显示标签进行调整

在筛选和分组中对一些字段进行隐藏实现格式如下:

  1. @api.model
  2. def fields_get(self, allfields=None, attributes=None):
  3. # 过滤掉筛选中不显示项
  4. res = super(SupplierInvoiceRecordPivot, self).fields_get(allfields, attributes)
  5. filter_field = ['create_uid', 'write_date', 'create_date', 'write_uid', 'uid']
  6. for key, value in res.items():
  7. if key in filter_field:
  8. res[key]['searchable'] = False
  9. res[key]['sortable'] = False
  10. return res
  • res[key][‘searchable’] = False 设置字段 key 在筛选中不可见
  • res[key][‘sortable’] = False 设置字段key在分组中不可见
posted @ 2023-03-06 22:10  CrossPython  阅读(66)  评论(0编辑  收藏  举报