找不到为什么 odoo 序列递增两次?
cannot find out why odoo sequence is incrementing twice?
我创建了一个带有序列字段的模型:
class AimedPurchaseOrder(models.Model):
_name = "aimed.purchase.order"
name = fields.Char('Number', readonly=True, copy=False,
default=lambda self:self.env['ir.sequence'].next_by_code('aimed.purchase.order'))
然后我添加了这样的序列:
<record id="seq_purchase_order" model="ir.sequence">
<field name="name">Aimed Purchase Order</field>
<field name="code">aimed.purchase.order</field>
<field name="prefix">BCV</field>
<field name="padding">4</field>
<field name="company_id" eval="False"/>
</record>
问题是当我打开表单视图创建新记录时,我得到了它应该保存的序列的下一个值,但是当我保存记录时它又递增了一次,我在具有此序列的树视图:
BCV0002、BCV0004、BCV0006、...
这怎么可能?我该如何修复它以保存第一次显示的默认值而不再次递增?
Update:
当我删除 readonly=True
时它工作正常,但我不能让这个字段可编辑。
我不完全确定,但 IIRC 你可以使用 force_save="1"
因为 Odoo 11 作为视图中字段的属性来告诉 Odoo 为只读字段写入值。
只读字段的示例:
<field name="my_readonly_field" readonly="1" force_save="1" />
如果在较旧的 Odoos(10 及以下)上,有一个社区模块将此功能添加到 Odoo,称为 web_readonly_bypass
,例如可以找到 Odoo 10 的 here。
我创建了一个带有序列字段的模型:
class AimedPurchaseOrder(models.Model):
_name = "aimed.purchase.order"
name = fields.Char('Number', readonly=True, copy=False,
default=lambda self:self.env['ir.sequence'].next_by_code('aimed.purchase.order'))
然后我添加了这样的序列:
<record id="seq_purchase_order" model="ir.sequence">
<field name="name">Aimed Purchase Order</field>
<field name="code">aimed.purchase.order</field>
<field name="prefix">BCV</field>
<field name="padding">4</field>
<field name="company_id" eval="False"/>
</record>
问题是当我打开表单视图创建新记录时,我得到了它应该保存的序列的下一个值,但是当我保存记录时它又递增了一次,我在具有此序列的树视图:
BCV0002、BCV0004、BCV0006、...
这怎么可能?我该如何修复它以保存第一次显示的默认值而不再次递增?
Update:
当我删除 readonly=True
时它工作正常,但我不能让这个字段可编辑。
我不完全确定,但 IIRC 你可以使用 force_save="1"
因为 Odoo 11 作为视图中字段的属性来告诉 Odoo 为只读字段写入值。
只读字段的示例:
<field name="my_readonly_field" readonly="1" force_save="1" />
如果在较旧的 Odoos(10 及以下)上,有一个社区模块将此功能添加到 Odoo,称为 web_readonly_bypass
,例如可以找到 Odoo 10 的 here。