OpenERP 7 |是否存在on_submit like事件以及确定任何表单字段是否有更改的方法?

时间:2014-04-17 07:04:52

标签: openerp openerp-7

情景:

我的应用程序需要与OpenERP进行数据同步。我计划通过以下方式实现这一目标:

  • 在OpenERP模型上创建日期时间字段我需要同步数据。
  • 每次更新OpenERP模型时,该日期时间字段值都会更改为当前日期时间。
  • 从我的应用程序角度来看,我将在给定的时间间隔内完成一个cron作业。我实际上不会使用cron作业,为了简单起见,我们可以坚持使用cron作业。
  • 我的应用程序将请求搜索日期时间字段值大于上次检查时间的所有条目。

问题

  • 是否有某种事件让我在提交表单时调用我的自定义函数?
  • 在我的功能范围内,当正在编辑模型的条目时,是否可以找出是否有任何表单字段值已被更改?

1 个答案:

答案 0 :(得分:3)

OpenERP ORM有一个create和write方法。您将需要覆盖它们,因为它们都充当on_submit类型方法,但是会调用新记录或现有记录。

您所做的只是覆盖一个或两个方法并调用super以确保记录实际写入然后执行您想要的任何操作。您还可以拦截写入并进行更改。对于创建,代码将是:

def create (self, cr, uid, values, context = None):
    new_id = super(MyObject, self).create(cr, uid, values, context = context)
    # Do stuff here.  Can look in values dict to see what has changed
    return new_id

写入方法大致相同,除了你还要写入ID。

OpenERP已经有创建和编写日期,但是那些用于OpenERP审核和锁定,你应该实现自己的日期/时间标记。最简单的方法是将其设为功能字段并设置store = True,以便每次写入记录时重新计算并存储