From b93024ca44544033f852130bd0a24c9e5d6b22dc Mon Sep 17 00:00:00 2001 From: zty Date: Mon, 13 Oct 2025 14:18:03 +0800 Subject: [PATCH] =?UTF-8?q?fix=20:=20ofm-models-publicity=20=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E8=AE=B0=E5=BD=95=E7=BC=96=E5=8F=B7=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E7=94=9F=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/ofm/models.py | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/apps/ofm/models.py b/apps/ofm/models.py index 2814e9a6..f22a132e 100644 --- a/apps/ofm/models.py +++ b/apps/ofm/models.py @@ -148,19 +148,16 @@ class Publicity(CommonBDModel): # 记录编号自动生成 def save(self, *args, **kwargs): if not self.number: - with transaction.atomic(): - # 加行锁,防止并发取到相同 last_number - last_number = self.__class__.objects.select_for_update(skip_locked=True).order_by('-id').first() # skip_locked 锁定行,避免并发冲突 - if last_number: - try: - last_num = int(last_number.number.split('-')[-1]) - except ValueError: - last_num = 0 - new_num= last_num + 1 - else: - new_num = 1 - # 格式化编号,带补零 - self.number = f"(GXKG-{datetime.now().year}-{new_num:02d})" + last_number = self.__class__.objects.filter(number__startswith=f"(GXKG-{datetime.now().year}-)").order_by('-id').first() + if last_number: + try: + last_num = int(last_number.number.split('-')[-1]) + except ValueError: + last_num = 0 + else: + last_num =0 + # 格式化编号,带补零 + self.number = f"(GXKG-{datetime.now().year}-{last_num+1:02d})" super().save(*args, **kwargs)