我有这个功能应该是在保存表单时保存一个字段('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
但是当我按下Save按钮时,Odoo会向我显示以下错误: AttributeError:'NoneType'对象没有属性'id'
为什么会这样?我能做什么? 任何帮助表示赞赏。感谢
答案 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