首页 > 解决方案 > 遍历 Odoo 预定动作中的所有记录

问题描述

我正在创建一个 cron 作业,它将每天运行并检查记录中的特定字段值。你能建议我,如何遍历所有记录吗?有一个已经可用的变量“记录”。我可以使用这个变量吗?

我试图遍历记录字段,我尝试过,task = env['x.duties']但我不确定如何继续前进。

编辑: 我使用的是 Odoo 12 网络版。我创建了一个名为 Task(Using odoo studio) 的自定义应用程序,我们在其中为员工定义任务。有些任务应该会重复发生。所以我为此定义了条件,例如,任务可以根据天数或每月的任何日期重复发生。

我需要创建一个自动化操作,在其中检查是否需要创建任务(记录)。我通过在“操作选项”下选择“执行 Python 代码”从 Web 界面执行此操作。在代码部分中,我需要获取所有记录,然后遍历它们中的每一个以检查是否需要创建新记录。

有许多预定义的变量,如 env、record、records 等。我需要知道如何进行。

我能够使用创建新记录 env['x_duties'].create({'x_name': 'example'})

请指导我如何获取特定模型的所有记录并使用循环一一遍历记录

标签: pythonodoo

解决方案


您应该search()在自动操作代码中使用您的模型。例如,查找数据库中的每条记录并在检查条件后创建一条新记录:

# search all duties in database
# probably use a better domain to filter out non interesting
# duties for example archived records
duties = env['x_duties'].search([])
for duty in duties:
    # does this duty meet the condition?
    if duty._meets_condition():  # implement your own way this is just pseudo!
        values = {'x_name': 'new duty as recurring for %s' % duty.x_name}
        duty.create(values)

推荐阅读