星辉Odoo模型开发教程4-常用字段属性
字段还有一些其它属性供我们定义其行为。以下是常用的属性,通常都作为关键字参数:
⚫ string 是字段的默认标签,在用户界面中使用。除 Selection 和关联字段外,它都是第一个位置参数,所以大多数情况下它用作关键字参数。如未传入,将由字段名自动生成。
⚫ default 设置字段默认值。可以是具体值(如 active 字段中的 default=True),或是可调用引用,有名函数或匿名函数均可。
⚫ help 提供 UI 中鼠标悬停字段向用户显示的提示文本。
⚫ readonly=True 会使用户界面中的字段默认不可编辑。在 API 层面并没有强制,模型方法中的代码仍然可以向其写入。仅针对用户界面设置
⚫ required=True 使得用户界面中字段默认必填。这通过在数据库层面为列添加 NOT NULL
约束来实现。
⚫ index=True 为字段添加数据库索引,让搜索更快速,但同时也会部分降低写操作速度。
⚫ copy=False 让字段在使用 ORM copy()方法复制字段时忽略该字段。除 to-many 关联字
段外,其它字段值默认会被复制。
⚫ groups 可限制字段仅对一些组可访问并可见。值为逗号分隔的安全组 XML ID 列表,如
groups=’ base.group_user,base.group_system’。
⚫ states 传入依赖 state 字段值的 UI 属性的字典映射值。可用属性有 readonly, required
和 invisible,例如 states={‘done’ :[(‘readonly’ ,True)]}。
“ 小贴士: 注意 states 字段等价于视图中的 attrs 属性。同时注意视图也支持 states 属性,但用途不同,传入逗号分隔的状态列表来控制元素什么时候可见。 ”
以下为字段属性关键字参数的使用示例:
name = fields.Char(
'Title',
default=None,
index=True,
help='Book cover title',
readonly=False,
required=True,
translate=False,
)
如前所述, default 属性可带有固定值,或引用函数来自动计算默认值。对于简单运算,可使用lambda 函数来避免过重的有名函数或方法的创建。以下是一个计算当前日期和时间默认值的常用示例:
last_borrow_date = fields.Datetime(
'Last Borrowed On',
default=lambda self: fields.Datetime.now(),
)
默认值也可以是一个函数引用,或待定义函数名字符串:
last_borrow_date = fields.Datetime(
'Last Borrowed On',
default='_default_last_borrow_date',
)
def _default_last_borrow_date(self):
return fields.Datetime.now()
当模块数据结构在不同版本中变更时以下两个属性非常有用:
⚫ deprecated=True 在字段被使用时记录一条 warning 日志
⚫ oldname=’ field’是在新版本中重命名字段时使用,可在升级模块时将老字段中的数据自
动拷贝到新字段中