-1

我有这个功能应该做的是在保存表单时在字段('niu')中保存一个序列。此表单在 sale.order.line 模型中。
在此处输入图像描述

niu = fields.Char(string="NIU", readonly=True)

    @api.model
    def create(self, vals):
        for rec in self:
            if rec.product_id.product_tmpl_id.type == 'product' and not rec.niu:
                if vals.get('niu') == ' ':
                    vals[u'niu'] = self.env['ir.sequence'].next_by_code('sale.order.line')
                result = super(SaleOrder, self).create(vals)
                return result

但是当我按下保存按钮时,Odoo 向我显示以下错误: AttributeError: 'NoneType' object has no attribute 'id'

为什么会这样?我能做些什么?任何帮助表示赞赏。谢谢

4

1 回答 1

2

您不需要for rec in self循环,因为您正在创建。您无权通过 访问对象字段self,该字段目前为空。您只需要使用vals. 您需要更改方法装饰器:

@api.model
@api.returns('self', lambda value:value.id)
def create(self, vals):

我真的认为你应该阅读 Odoo基础知识,这不是你遇到的第一个问题,你可以避免深入阅读它们......另外,看看 account_invoice.py 到 account 模块,它显示了大量的 v8 api

于 2016-03-04T11:31:58.383 回答