所以我一直在寻找网络,寻找一种方法为我正在使用的Odoo 9的新API创建自己的序列。但是,我无法找到满意的答案。据我所见,在Odoo Docs中没有很好地记录序列。
这是我目前所知道的。
来自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不是一个存在且我无法使用的模型,因此我删除了该记录并且编译/更新没有错误。
从以前的来源,我也知道:
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')
并将其添加到create函数中,然后写入要存储的任意字段。
所以我在没有收到任何错误消息的情况下完成了所有这些。
我的问题是:我正在存储序列实例的字段没有改变。我检查了序列设置,当我创建新记录时,序列没有增加。
为了清楚起见:
@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在哪里进行自动增量,可能会指示我找到合适的来源,或指出我的代码有什么问题以及如何修复它,我会非常感谢这一努力。< / p>
答案 0 :(得分:0)
您的代码没有更新目录变量。这就是它的原因。
尝试使用此代码。
@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)