odoo fields源码详解(模型中定义字段,非视图)

1.fields的属性包括

  1. string:在视图中field标题的字符串,不设置默认为变量名大写。
  2. help:用户鼠标放在字段名上面的提示字符串。

在这里插入图片描述

  1. readonly:字段是否为只读(布尔值,默认为“false”)

  2. required:是否需要字段值(布尔值,按默认``false`)

  3. index:字段是否在数据库中编入索引(布尔值,按默认``false`)

  4. default:字段的默认值;这是静态的值,或获取记录集并返回值的函数;使用
    default=none放弃字段的默认值。

  5. states:将状态值映射到UI属性值列表的字典对;可能的属性有:“readonly”、“required”、“invisible”。注意:任何基于状态的条件都要求“state”字段值为在客户端用户界面上可用。这通常是通过将其包含在相关视图,但是可以在视图中重新指定。

  6. groups:以逗号分隔的组XML ID列表(字符串);此仅限制对给定组的用户的字段访问

  7. bool copy:记录时是否应复制字段值重复(默认值:对于普通字段为“true”,对于
    一个2任意和计算字段,包括属性字段和相关字段)

  8. string oldname:此字段的前一个名称,以便ORM可以在它迁移时自动重命名。

  9. compute定义一个字段,该字段的值是计算出来的,而不是简单地从数据库中读取。特定于计算的属性字段如下所示。要定义这样的字段,只需提供一个值属性“compute=计算字段的方法的名称“

  10. search:在字段上实现搜索的方法的名称(可选)

  11. store:字段是否存储在数据库中(boolean,by在计算字段上默认为“false”)

  12. compute_sudo:是否应将字段重新计算为超级用户绕过访问权限(布尔值,默认为“false”)。请注意,这对未存储的计算字段没有影响为“compute”、“inverse”和“search”提供的方法是模型方法。示例:

       upper = fields.Char(compute='_compute_upper',
                           inverse='_inverse_upper',
                           search='_search_upper')
    
       @api.depends('name')
       def _compute_upper(self):
           for rec in self:
               rec.upper = rec.name.upper() if rec.name else False
    
       def _inverse_upper(self):
           for rec in self:
               rec.name = rec.upper.lower() if rec.upper else False
    
       def _search_upper(self, operator, value):
           if operator == 'like':
               operator = 'ilike'
           return [('name', operator, value)]
    
计算函数中的所有字段都应该包括在装饰器@api.depends中
这些字段决定何时重新计算字段;重新计算是自动并保证缓存/数据库的一致性。
默认情况下,计算字段不会存储到数据库中,并且即时计算。
添加属性``store=true``将存储数据库中字段的值。
存储字段的优点是对该字段的搜索是由数据库本身完成的。
劣势是它需要在必须重新计算字段时进行数据库更新。
  1. inverse:反转方法(可选)
    逆方法,顾名思义,是计算的逆方法。
    调用的记录具有字段值,并且必须对字段依赖项应用必要的更改,以便计算给出了预期值。注意,计算字段没有默认情况下,反向方法是只读的。在执行对模型的实际搜索。它必须返回与条件:“字段运算符值”。

  2. 关联字段:related:
    关联字段读取模型上的字段。如果没有重新定义属性,关联的字段属性由原来的属性指定。stringhelpreadonly`, requiredgroups,digits,size,translate,sanitize,selection,comodel_name,domain,context``.。默认情况下,相关字段的值不会存储到数据库中。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值