我在GUI中创建一个字段Odoo有一个带有' compute'的方法。但我无法得到它。
我在sale.py模块的sale.order.line中使用compute属性创建了一个字段。
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')
这非常有效,但同样想在GUI Odoo中做。
图片下方显示:http://es.zimagez.com/zimage/computefield.php
但它显示以下错误:
ValueError: forbidden opcode(s) in u"for rec in self:\n if rec.product_id.product_tmpl_id.type == 'product' and not rec.niu:\n \t rec.niu = self.env['ir.sequence'].next_by_code('sale.order.line')"
可能存在语法错误,但我不知道如何为GUI Odoo中的字段定义方法。
欢迎任何帮助,建议和建议。如果有人能帮助我,我将非常感激。
答案 0 :(得分:3)
解决方案是使用类似字典的赋值而不是self来赋值。注释,例如:
self.x_hora_estimada_llegada = self.date_order
将抛出
禁止操作码在你....
但你使用类似字典的作业,你的字段就可以了!:
for record in self:
record['x_hora_estimada_llegada'] = self.date_order
答案 1 :(得分:1)
我不使用v9,所以我认为你只需要做一些试验和错误。
试试这个:
if self.product_id.product_tmpl_id.type == 'product' and not self.niu:
self.niu = self.env['ir.sequence'].next_by_code('sale.order.line')
如果它不起作用,可以试试:
if self.product_id.product_tmpl_id.type == 'product' and not self.niu:
return self.env['ir.sequence'].next_by_code('sale.order.line')
答案 2 :(得分:0)
逗人,
我遇到了类似的问题,你可以试试
如果self.product_id.product_tmpl_id.type =='产品'而不是self.niu: 自我。[' niu'] = self.env [' ir.sequence']。next_by_code(' sale.order.line')