在Odoo中,TransientModel用于创建临时记录,通常用于向用户收集信息,比如向导(Wizards)、配置向导等。TransientModel不会永久保存数据到数据库硬盘中,而是保存在数据库的临时表中,这些记录在数据库中仅保留一段有限的时间,通常在交易完成后不久会自动删除。
TransientModel的参数和特性
- _name: 继承自Model,定义模型的技术名称。
- _description: 继承自Model,定义模型的人类可读描述。
- _transient: 设置为True,标记模型为临时模型。
TransientModel的字段类型
字段类型与常规模型(如Model)相同,包括:
-
Char: 短文本字符串。
-
Text: 长文本字符串。
-
Boolean: 布尔类型。
-
Integer: 整数。
-
Float: 浮点数。
-
Date: 日期。
-
Selection: 选择列表。
等等。 -
TransientModel的方法
和常规模型类似,但是在TransientModel中通常会看到以下特定的方法: -
default_get: 初始化字段的默认值。
-
create: 创建新的临时记录。
-
write: 修改临时记录。
-
unlink: 删除临时记录。
代码示例
下面是一个创建一个简单的TransientModel的例子,在这个例子中,我们创造一个简单的向导来收集用户的反馈。
from odoo import models, fields, api
class FeedbackWizard(models.TransientModel):
_name = 'feedback.wizard'
_description = 'Feedback Wizard'
name = fields.Char('Name')
email = fields.Char('Email')
feedback = fields.Text('Feedback')
def action_submit_feedback(self):
# 这里可以添加将反馈记录到数据库或发送邮件的逻辑
# 举个例子,这里我们只是打印反馈
print(f'Received feedback from {self.name}: {self.feedback}')
在此代码中,FeedbackWizard是一个TransientModel,它有三个字段:name、email和feedback。我们还定义了一个方法action_submit_feedback,当用户提交反馈时,这个方法可以被调用(通常是通过向导视图中的按钮)。
请注意,你可能需要在前端添加XML视图以实际使用此向导,并在后端添加更多的逻辑来处理提交的数据,比如保存到数据库中或者通过电子邮件发送反馈。这里的例子主要是为了演示TransientModel的定义和基本用法。