我有一个sale.order.line
模型的窗体视图,并创建了一个名为' niu '
的字段(序列字段),该字段自动增加其值。为什么在Odoo中保存字段的顺序会改变?
对于每种产品类型的可供货状态,您都可以添加到可正常工作的表单中但是我遇到问题,因为当您添加产品堆叠时,值会增加,但是当我按下“保存”按钮时,会自动更改序列。
见下面附图片:
这是模型中的 '牛' 字段和sale.order.line方法:
niu = fields.Char(string="NIU", compute="_niu_validation", readonly=True, store=True)
@api.depends('product_id.product_tmpl_id.type')
def _niu_validation(self):
for rec in self:
if rec.product_id.product_tmpl_id.type == 'product' and not rec.niu:
rec.niu = self.env['ir.sequence'].next_by_code('sale.order.line')
我能做些什么来使序列没有改变,并且初始数字是establis hed?
你好,关于段落:你可以删除方法_niu_validation,覆盖sale.order.line的方法create,并且当你的行被存储时计算field的值。但在这种情况下,用户将不会在“即时”栏中看到新的值。 如何使创建方法在存储时计算字段的值? 我改写由该方法_niu_validation创建(个体) @ api.model DEF创建(个体): \t \t用于记录在自: \t \t \t如果rec.product_id.product_tmpl_id.type == '产物'而不是rec.niu: \t \t \t \t rec.niu = self.env ['ir.sequence']。next_by_code('sale.order.line') – beriliox
在你的模型中:'niu = fields.Char(string = “NIU”,readonly = True)@ api.model def create(self,vals):vals [u'niu'] = #write here any logic ... return super(NameYourClass,self).create(vals)' –
在米y模型我把以下内容,但是当我按下保存按钮时不创建序列。为什么会发生? @ api.model DEF创建(个体,瓦尔斯): 用于REC在自: 如果rec.product_id.product_tmpl_id.type == '产品' 和不rec.niu: 瓦尔斯[u'niu'] = self.env ['ir.sequence']。next_by_code('sale.order.line') return super(SaleOrderLine,self).create(vals) – beriliox