0

为了开发一些 OpenERP 模块,我一直在研究 Python 语言的一些源代码。我已经通过了我认为我没有得到的代码语法。有人可以帮助我,以便我可以继续学习 Python 语言来开发 OpenERP 模块。这是代码

self.write(cr, uid, ids, {'name': self.pool.get('ir.sequence').get(cr, uid, 'hr.applicant'),'state': 'approved'})

我确信 ir.sequence 是一个类,但我似乎不理解这里代码的语义。请帮我。谢谢,希望给点建议

4

1 回答 1

3

ir.sequence是 OpenERP 保持可配置序列的地方。这些是由需要它们的模块安装的,它们具有一些您可以使用的功能,例如定义前缀(例如销售订单),它们还可以具有每个公司的值,因此如果您正在运行多公司,您将找不到由于其他公司的订单,一家公司的销售订单以奇数递增。

所以在上面的代码片段中,它说“给我 hr.applicant 序列中的下一个数字”。模型上的 get 方法ir.sequence将处理多公司并分配前缀/后缀等。

有几点需要注意。

  1. 您自己在模块中使用记录元素设置这些,但请确保将记录放在noupdate="1"记录中,否则您将在更新模块时重置计数器。您可以定义我相信的前缀和后缀。
  2. 它们是基于表格的序列。这意味着与用于记录 ID 的 Postgres 序列不同,如果事务由于错误而回滚,则不使用序列号。
  3. 如果您正在编写自己的代码,请不要在长时间运行的事务中获取大量它们,否则您可能会由于争用而在 Postgres 中获得序列化回滚。常规,获取下一个值并编写代码应该没问题。
  4. 它们已经存在了一段时间,所以你会看到 lambdas 使用了很多来获得下一个值。
  5. 创建这些对象时,您必须设置两个对象。看看 sale.order 就是一个很好的例子。
于 2013-10-23T08:46:52.867 回答