以下为可用的非关联字段类型以及其对应的位置参数:
- Char(string)是一个单行文本,唯一位置参数是string字段标签。
- Text(string)是一个多行文本,唯一位置参数是string字段标签。
- Selection(selection, string)是一个下拉选择列表。选项位置参数是一个[(‘value’, ‘Title’),]元组列表。元组第一个元素是存储在数据库中的值,第二个元素是展示在用户界面中的描述。该列表可由其它模块使用selection_add关键字参数扩展。
- Html(string)存储为文本字段,但有针对用户界面 HTML 内容展示的特殊处理。出于安全考虑,该字段会被清洗,但清洗行为可被重载。
- Integer(string)仅需字段标题字符串参数。
- Float(string, digits)带有第二个可选参数digits,该字段是一个指定字段精度的(x,y)元组,x 是数字总长,y 是小数位。
- Monetary(string, currency_field)与浮点字段类似,但带有货币的特殊处理。第二个参数currency_field用于存储所使用货币,默认应传入currency_id字段。
- Date(string)和Datetime(string)字段只需一个字符串文本位置参数。
- Boolean(string)的值为True 或False,可传入一个字符串文本位置参数。
- Binary(string)存储文件类二进制文件,只需一个字符串文本位置参数。它可由Python使用 base64编码字符串进行处理。
- 文本字符串:Char, Text和Html有一些特有属性:
-
- size (Char)设置最大允许尺寸。无特殊原因建议不要使用,例如可用于带有最大允许长度的社保账号。
- translate使用得字段内容可翻译,带有针对不同语言的不同值。
- trim默认值为 True,启动在网络客户端中自动去除周围的空格。可通过设置trim=false来取消。
-
常用字段属性
字段还有一些其它属性供我们定义其行为。以下是常用的属性,通常都作为关键字参数:
- 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 属性,但用途不同,传入逗号分隔的状态列表来控制元素什么时候可见。