def save(self, *args, **kwargs):
if not self.eid:
counter = EventCounter.get_or_create(self.channel)
with transaction.atomic():
counter = EventCounter.objects.select_for_update(
).get(id=counter.id)
self.eid = counter.value + 1
try:
super(Event, self).save(*args, **kwargs)
except Exception:
self.eid = 0
raise
counter.value = self.eid
counter.save()
else:
super(Event, self).save(*args, **kwargs)
评论列表
文章目录