Odoo-如何添加自定义字段属性,而不需要通过扩展进行修改



我正在尝试将自定义属性用于名为sf_group的字段。不幸的是,通过fields_get()获取字段描述时会显示此属性。有没有办法将此属性添加到字段描述中?我需要检查这个属性是否在字段上,以及它在JS端的值是多少。

注意:Odoo-添加自定义字段属性?没有帮助,因为只有当你修改源代码时它才有效,这是我不想做的事情。

谢谢!

找到了答案!

from odoo import models, fields, api
class Company(models.Model):
_inherit = "res.company"
test_field = fields.Char(string="Test Field", custom_attr="random01")
def _valid_field_parameter(self, field, name):
return name == 'custom_attr' or super()._valid_field_parameter(field, name)
@api.model
def fields_get(self, allfields=None, attributes=None):
fields = super().fields_get(allfields=allfields, attributes=attributes)
for key in fields.keys():
if key in self._fields and hasattr(self._fields[key], 'custom_attr'):
fields[key]['custom_attr'] = self._fields[key].custom_attr
return fields

您可以定义一个新的Char字段,并在那里设置属性及其描述。

示例:

from operator import attrgetter
from odoo import models, fields

class Char(fields.Char):
custom_attr = None
_description_custom_attr = property(attrgetter('custom_attr'))

class Company(models.Model):
_inherit = "res.company"
test_field = Char(string="Test Field", custom_attr="random01")

新属性将在字段描述中自动可用:

相关内容

最新更新