AttributeError:'NoneType'对象没有属性'id'

时间:2016-03-04 11:22:42

标签: python openerp odoo-9

我有这个功能应该是在保存表单时保存一个字段('niu')的序列。此表单位于sale.order.line模型中 enter image description here

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

但是当我按下Save按钮时,Odoo会向我显示以下错误: AttributeError:'NoneType'对象没有属性'id'

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

1 个答案:

答案 0 :(得分:2)

您不需要for rec in self循环,因为您正在创建。 您没有通过self访问对象字段的任何权限,此时此字段为空。您只需要使用vals。 你需要改变方法装饰器:

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

我真的认为你应该在Odoo basics阅读,这不是你能避免深入阅读的第一个问题...... 另外,请查看account_invoice.py到帐户模块,其中显示了大量的v8 api