【问题标题】:Traversing through all the records in Odoo scheduled action遍历 Odoo 预定动作中的所有记录
【发布时间】:2019-12-11 00:58:26
【问题描述】:

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

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

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

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

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

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

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

【问题讨论】:

  • 你能详细点吗?哪个Odoo版本,简而言之有什么要求,请加个简单易懂的例子。
  • @CZoellner,我在问题中添加了详细信息。请看一看。

标签: python odoo


【解决方案1】:

您应该在自动操作代码中使用模型的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)

【讨论】:

  • 感谢您的建议。我会尽力按照你的建议去做。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-04
  • 2017-06-22
  • 2011-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多