在 Odoo 中,字段类型可以分为以下几类
基础类型
- char:字符型字段,用于存储较短的文本。可以设置 `size` 属性来定义字符串的最大长度。
- text:文本型字段,用于存储较长的文本,没有长度限制。
- boolean:布尔型字段,值为 `True` 或 `False`。
- integer:整数型字段,用于存储整数值。
- float:浮点型字段,用于存储小数值。可以通过 `digits` 属性定义整数部分和小数部分的位数。
- date:日期型字段,用于存储日期。
- datetime:日期时间型字段,用于存储日期和时间。
- binary:二进制型字段,用于存储二进制数据,如文件。
复杂类型
- selection:下拉框字段,允许用户从预定义的选项中选择值。例如:
'state': fields.selection([('n', 'Unconfirmed'), ('c', 'Confirmed')], 'State', required=True)
- function:函数型字段,字段值由函数计算得出,不存储在数据库中。定义格式如下:
fields.function(fnct, arg=None, type='float', method=False, store=False)
- `fnct`:计算字段值的函数。
- `arg`:传递给函数的参数。
- `type`:函数返回值的类型。
- `method`:是否是对象的方法。
- `store`:是否存储在数据库中。
关系类型
- many2one:多对一关系,用于关联另一个模型的一个记录。例如:
'partner_id': fields.many2one('res.partner', 'Partner')
- one2many:一对多关系,用于关联多个记录。例如:
'address_ids': fields.one2many('res.partner.address', 'partner_id', 'Addresses')
- many2many:多对多关系,用于关联多个记录。例如:
'category_ids': fields.many2many('res.partner.category', 'res_partner_category_rel', 'partner_id', 'category_id', 'Categories')
字段属性
- required:字段是否必填。
- readonly:字段是否只读。
- default:字段的默认值。
- ondelete:关联对象删除时的行为,如 `cascade` 表示级联删除,`set null` 表示设置为 `null`。
通过这些字段类型和属性,您可以在 Odoo 中灵活地定义模型和数据结构。