• odoo字段属性列举


    罗列一些Odoo中的字段属性,基本包含大部分的属性。

    常用字段属性

    平平无奇常用字段属性

    string:字段的标题,在UI视图标签中使用。它是可选项,如未设置,会通过首字母大写及将空格替换成为下划线来从字段名获取标签。

    required:强制字段在用户界面中必填,默认为False。

    readonly:让该字段在用户界面为只读,默认为False。

    index:在设置为True时,为该字段创建一个数据库索引,有时可供更快搜索使用。 

    help:在UI提示工具中显示的解释性文本。  

    groups:让字段仅对安全组可见。它是一个包含安全组的XML ID逗号分隔列表的一个字符串。 

    store:让计算字段等原本不保存的数据存储在数据库中,设置这个可以使计算字段可被搜索。

    copy:标识在复制记录时是否拷贝字段值。对于非关系型字段和Many2one它的默认值是True,对One2many和计算字段它的值为False。

    default

    默认值,也可以是一个用于计算默认值的函数,例如default=_compute_default, _compute_default是模型中定义在字段前一个的方法。

    related

    关联属性,将相关的字段变成关联字段来访问值;

    publisher_id = fields.Many2one("res.partner", string="Publisher", ondelete="set null", index=True)
    publisher_city = fields.Char(string="Publisher City", related="publisher_id.city")

    关联字段实际上是计算字段。它们仅提供⼀种⽅便的快捷语法来从关联模型读取字段值。作为⼀个计算字段,这意味着也可以使⽤store属性。

    states

    states允许用户界面依据state字段的值来动态设置readonly,required和invisible的值。因此,它要求存在一个state字段并在表单视图中使用(即使是隐藏的)。state属性的名称是在odoo硬编码且无法修改的。

    compute

    计算字段,默认为只读,需要定义一个函数以根据情况动态的生成该字段的值。并且该字段默认不能被搜索到。

    计算字段在运⾏时动态计算,默认存储,可设置store=True将计算字段存储在数据库,并且此时可被搜索到;ORM使⽤缓存来避免在每次访问值时的低效重计算。它使⽤@depends装饰器来监测缓存值何时应置为⽆效并重新计算,因此, 它需要知道所依赖的其它字段。

    date_release = fields.Date(string="Release Date")
    # 计算字段,及让计算字段可编辑和可搜索
    age_days = fields.Float(string="Days Since Release", compute="_compute_age", inverse="_inverse_age", search="_search_age", store=False, compute_sudo=False)  # compute_sudo 用于需要提权来执行计算的情况
    
    # 值计算逻辑的方法
    @api.depends("date_release")
    def _compute_age(self):
        today = fields.Date.today()
        for book in self.filtered("date_release"):  # 筛选有 date_release 的书籍
            delta = today - book.date_release
            book.age_days = delta.days

    关于计算字段的可编辑与可搜索可查看我的另一篇文章:odoo之技巧集合一-计算字段的可编辑与可搜索

    ondelete

    关联删除属性,决定在关联记录删除时执行什么操作。默认值为"set null",所有值如下:

    • "set null":会将该字段置为空值;
    • "restrice":会阻止关联字段记录的删除;
    • "cascade":导致关联的记录同样被删除;

    示例:

    partner_id = fields.Many2one("res.partner", ondelete="cascade")

    context

    上下文属性,context对关联字段有效,在点击字段进入关联视图时context会向客户端上下文添加变量。例如,我们可以使用它来为新纪录设置通过该视图创建的默认值。

    domain

    过滤属性,对关联字段有效,用来限制可用的关联记录列表的搜索过滤器。

    示例:

    category_id = fields.Many2one("library.book.category", string="Category", domain=[('id', 'in', ['4', '5', '6'])])

    digits

    用于Float字段并设置该字段的精度值,精度由总位数和小数位数对来定义。

    length = fields.Float(string="长度", digits=(8, 3))。# 总长度为8位,小数位占3位

    关联字段属性

    共有属性

    comodel_name

    目标模型标识符,对所有关联字段强制使用,可以占位定义而无需使用关键字;

    One2many,Many2many

    limit

    它在One2many和Many2many中使用,对在用户界面级别上用于记录读取的数量这是可选限制;当设置后,最多只能添加和显示n条数据。

    author_ids = fields.Many2many("res.partner", string="Authors", limit=10)

    One2many

    inverse_name

    它仅应用于One2many,是反向Many2one关联的目标模型中的字段名;

    Many2many

    1. relation:用于Many2many字段。many2many关联表的名称默认使用两个关联模型名按字母排序加上一个_rel后缀来创建。但我们可以使用relation属性来进行覆盖。
    2. column1:这是连接这个模型的关联表中的Many2one字段的名称
    3. column2:这是在关联数据表中连接comodel的Many2one字段的名称 

    其他字段属性

    其他较少使用的字段

    translate

    在设置为True时,让字段可翻译,它可根据用户的界面语言保持不同值。

    company_dependent

    让该字段根据公司存储不同值。 

    strip_style

    和sanitize配合使用,见下个属性。 

    sanitize

    用于Html字段并去除包含不安全标签的内容。使用它会对输入进行全局清理。如果需要更精细的控制,可以使用一些关键字,仅在启用sanitize时生效。

    • sanitize_tags=True删除⽩名单列表以外的标签(默认项)
    • sanitize_attributes=True删除⽩名单列表以外的标签属性
    • sanitize_style=True删除⽩名单列表以外的样式属性
    • strip_style=True删除所有样式元素
    • strip_class=True删除所有class属性

    这⾥所提及的各个⽩名单列表在odoo/tools/mail.py中定义。

  • 相关阅读:
    password
    bzoj 1458: 士兵占领
    国家集训队2011 happiness
    cogs 2051. 王者之剑
    uva 10779 Collectors Problem
    [Jxoi2012]奇怪的道路
    天神下凡
    藏宝图
    黑红树
    愤怒的小鸟
  • 原文地址:https://www.cnblogs.com/yifchan/p/14279724.html
Copyright © 2020-2023  润新知