def save(self, *args, **kwargs):
sid = transaction.savepoint()
if self.pk is None:
i = 1
while self.pk is None:
# Protection from infinite loop
if i > 20:
raise IntegrityError('Too many iterations while generating unique Invoice number.')
self.payment_no = random.randint(1, 2147483646)
try:
super(Invoice, self).save(*args, **kwargs)
except IntegrityError:
transaction.savepoint_rollback(sid)
i += 1
else:
super(Invoice, self).save(*args, **kwargs)
transaction.savepoint_commit(sid)
transaction.commit()
评论列表
文章目录