Odoo 新 API 自动 Increment/Sequencing

Odoo New API Auto Increment/Sequencing

所以我一直在网上四处寻找,目的是找到一种方法来为我正在使用的 Odoo 9 的新 API 创建我自己的序列。但是,我找不到满意的答案。据我所知,Odoo 文档中没有很好地记录序列。

这是我目前所知道的。

来自this 我知道:

<openerp>
  <data noupdate="1">
    <record model="ir.sequence.type" id="seq_type_obj_id">
      <field name="name">obj_id_seq</field>
      <field name="code">seq.obj.name</field>
    </record>
    <record model="ir.sequence" id="seq_obj_id">
      <field name="name">obj_id_seq</field>
      <field name="code">seq.obj.name</field>
      <field name="prefix">prefix</field>
      <field name="padding">3</field>
    </record>
  </data>
</openerp>

但显然 ir.sequence.type 不是一个存在的模型,我无法使用,所以我删除了该记录并且它 compiles/updates 没有错误。

根据之前的资料,我也知道:

my_sequence = self.pool['ir.sequence'].get(cr, uid, seq_obj_name)
self.write(cr, uid, [picking.id], {'ur_emp_no_field': my_sequence})

但这是旧的 API,所以我将其更改为:

# Correct me if I'm wrong here
my_sequence = self.env['ir.sequence'].get('seq.obj.name')

并将其添加到创建函数中,然后写入要存储的任意字段。

所以我已经完成了所有这些,没有收到任何错误消息。

我的问题是: 我存储序列实例的字段没有改变。我检查了序列设置,当我创建新记录时序列也没有递增。

为了清楚起见:

@api.model
def create(self, vals):
    for rec in self:
        rec.seq_id = self.env['ir.sequence'].get('seq.obj.name')
    return super(PurchaseOrder, self).create(vals)

如果有人能给我一个关于 Odoo 在何处进行自动递增的详尽解释,也许会指导我找到正确的来源,或者指出我的代码有什么问题以及如何修复它,我将不胜感激.

您的代码没有更新目录变量。这就是它的原因。

尝试使用此代码。

@api.model
def create(self, vals):
    if vals:
        vals.update({
            'seq_id': self.env['ir.sequence'].get('seq.obj.name')
        })
    return super(PurchaseOrder, self).create(vals)