星辉Odoo模型开发教程3-创建字段
创建新模型后的第一步是添加字段。 Odoo 支持我们能想到的所有基本数据类型,如文本字符串、整型、浮点型、布尔型、日期、日期时间以及图片或二进制数据。下面就来看看 Odoo 中一
些可用的字段类型吧。
基本字段类型
我们将为图书模型添加几种可用的字段类型,编辑 library_app/models/library_book.py 文件后 Book 类会长这样:
class Book(models.Model):
...
# String fields
name = fields.Char('Title', required=True)
isbn = fields.Char('ISBN')
book_type = fields.Selection(
[('paper', 'Paperback'),
('hard', 'Hardcover'),
('electronic', 'Electronic'),
('other', 'Other')],
'Type')
notes = fields.Text('Internal Notes')
descr = fields.Html('Description')
# Numeric fields:
copies = fields.Integer(default=1)
avg_rating = fields.Float('Average Rating', (3,2))
price = fields.Monetary('Price', 'currency_id')
currency_id = fields.Many2one('res.currency') # price helper
# Date and time fields
date_published = fields.Date()
last_borrow_date = fields.Datetime(
'Last Borrowed On',
default=lambda self: fields.Datetime.now())
# Other fields
active = fields.Boolean('Active?', default=True)
image = fields.Binary('Cover')
# Relational Fields
...
此处是 Odoo 中所带的非关联字段示例,每个字段都带有所需的位置参数。
“ 小贴士: Python 中有两类参数:位置参数和关键字参数。位置参数需按指定顺序使用。例如, f(x, y)应以 f(1, 2)方式调用。关键字参数通过参数名传递。如同一个例子,可使用 f(x=1, y=2)
甚至是 f(1, y=2)两种传参方式混用。更多有关关键字参数知识参见 Python 官方文档。 ”
对于大多数非关联字段,第一个参数是字段标题,与字符串字段参数相对应。它用作用户界面标签的默认文本。这个参数是可选的,如未传入,会根据字段名将下划线替换为空格并将单词首字母大写来自动生成。以下为可用的非关联字段类型以及其对应的位置参数:
⚫ 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 编码字符串进行处理。
“ 注意: Odoo 12 的修改
Date 和 Datetime 字段现在 ORM 中作为日期对象处理。此前的版本中作为文本字符串处理,进
行操作时需与 Python 日期对象间进行转换。 ”
文本字符串: Char, Text 和 Html 有一些特有属性:
⚫ size (Char)设置最大允许尺寸。无特殊原因建议不要使用,例如可用于带有最大允许长度的
社保账号。
⚫ translate 使用得字段内容可翻译,带有针对不同语言的不同值。
⚫ trim 默认值为 True,启动在网络客户端中自动去除周围的空格。可通过设置 trim=false
来取消。
“ 注意: Odoo 12 的修改
trim 字段属性在 Odoo 12 中引入,此前版本中文本字段保存前后的空格。 ”
除这些以外,还有在后面会介绍到的关联字段。不过, 我们还要先了解下有关字段属性的其它知识。
更多教程:https://www.erpdaxue.cn/odoo/odoo-teach/odoo12-teach/