在Odoo中定义一个模型(Model)通常涉及创建一个Python类,该类继承自models.Model
。这个类定义了数据库表中的列(字段),以及它们的类型、属性和行为。除了字段定义,你还可以设置记录的默认排序方式。
以下是一个简单的Odoo模型(Model)定义示例,包含了排序(Ordering):
from odoo import models, fields
class MyModel(models.Model):
_name = 'my.model' # 模型的唯一标识名
_description = 'My Model' # 模型的友好描述名
_order = 'name desc' # 默认排序规则,此处为按'name'字段降序
name = fields.Char('Name', required=True, index=True) # 一个字符字段,必填,索引
description = fields.Text('Description') # 一个文本字段
active = fields.Boolean('Active', default=True) # 一个布尔字段,默认为True
date_created = fields.Date('Creation Date', default=fields.Date.context_today) # 日期字段,带默认值
参数解释:
_name
: 字符串,定义了Odoo内部使用的模型名。这是模型的唯一标识符,通常用点号(.)分隔。_description
: 字符串,为模型提供了一个更易读的描述。这在Odoo UI中作为模型的名称显示。_order
: 字符串,指定了模型记录的默认排序。格式为'字段名 排序方式'
。如果要按多个字段排序,可以使用逗号分隔,如'name desc, id asc'
。
字段定义:
fields.Char
: 创建一个字符类型的字段。可接受参数如string
(字段标签)和required
(是否必填),index
(是否为该字段创建数据库索引以提高查询性能)。fields.Text
: 创建一个文本类型的字段,适用于长文本。fields.Boolean
: 创建一个布尔类型的字段,常用于标记记录是否被激活或启用。fields.Date
: 创建一个日期类型的字段,default
参数可以用于设置默认值,此示例中使用fields.Date.context_today
表示默认使用当前日期。
以上代码中,每个字段的第一个参数是字段的标签,它在Odoo的视图(View)中显示为字段的名称。字段定义时可以包含更多参数来进一步定制字段的行为,例如readonly=True
意味着字段值在视图中只读。
关于排序(_order):
_order
: 这个模型属性用来指定当你查询模型记录时,默认的排序顺序。排序规则是一个字符串,包含了字段名和排序顺序(asc
升序或desc
降序),多个排序规则可以用逗号分隔开。
在上述代码示例中,当查询my.model
模型的记录时,默认会按照name
字段的降序来排序。如果你不定义_order
,Odoo会默认使用记录的ID按升序排列。