我有这个方法:
@api.multi
@api.constrains('order_lines', 'order_lines.qty', 'order_lines.isbn')
def check_quantity(self):
for rec in self:
if rec.order_lines:
for line in rec.order_lines:
if line.qty > line.isbn.qty_available:
raise Warning(('Quantity is invalid.'))
if not line.isbn:
raise Warning(('Enter at least 1 ISBN to produce'))
else:
self.write({'state': 'inprogress',},)
对于qty_available
条件和inprogress
状态,它的功能是完美的,但是如果我不添加任何isbn
,它是product.product
的Many2one
,它不会抛出任何错误,但也不会起作用。在
它应该发出'Enter at least 1 ISBN to produce'
警告,但它只是加载,仅此而已。在
如果你需要进一步的解释,请告诉我。在
试试这个,我做了一些修改,我用ValidationError代替Warning,并且不要使用
@api.multi
,当我们使用constraint
时,系统将使用@api.one
,最后一行有一个注释不要在循环中使用
self
,因为如果调用 一种方法,它将应用于其中的所有记录。在不要在
@api.constrains
或depends
内调用write,这将导致递归错误。因为这两个修饰符是在create
或write
方法中调用的。在相关问题 更多 >
编程相关推荐