root - 错误 - post - 46 - 记录创建失败:(1062,“密钥''的重复条目'23SNS0002'”)

问题描述 投票:0回答:0

从 django.db 导入模型 从 django.utils 导入时区 导入日期时间

员工类(模型。模型): emp_id = models.CharField(editable=False,unique=True,max_length=10,default=None)

def save(self,*args, **kwargs):
    if not self.emp_id:
       prefix2 = format(timezone.now().strftime('%y'))+'SNS'
       prev_instances = self.__class__.objects.filter(emp_id__contains=prefix2)
       if prev_instances.exists():
          last_instance_id = prev_instances.last().emp_id[-4:]
          self.emp_id = prefix2+'{0:04d}'.format(int(last_instance_id)+1)
          self.email_id
       else:
           self.emp_id =prefix2+'{0:04d}'.format(1)
           self.emp_id
    super(Employee, self).save(*args, **kwargs)

执行系统检查...

系统检查未发现任何问题(0 沉默)。 2023 年 3 月 4 日 - 12:37:39 Django 版本 4.1,使用设置“CRMSolutions.settings” 在 http://127.0.0.1:8000/ 启动开发服务器 使用 CTRL-BREAK 退出服务器。 [04/Mar/2023 12:37:45] “POST /employee/emp/ HTTP/1.1” 201 418 [04/Mar/2023 12:38:06] “POST /employee/emp/ HTTP/1.1” 201 416 2023-03-04 12:38:20,500 - root - 错误 - post - 46 - 员工记录创建失败:(1062,“键‘employee_employee’的重复条目‘23SNS0002’ .emp_id'") 内部服务器错误:/employee/emp/ 2023-03-04 12:38:20,500 - django.request - 错误 - log_response - 241 - 内部服务器错误:/employee/emp/ [04/Mar/2023 12:38:20] “POST /employee/emp/ HTTP/1.1” 500 73

我想生成员工 ID 示例:23SNS0001、23SNSNS0002、23SNS0003……等等……作为唯一的,不应形成重复的……emp_id。 上面显示我的模型创建重复....即使我设置 unique = True。 我想我必须更改我使用过的保存功能中的代码...可以帮助解决问题

django save auto-increment prefix userid
© www.soinside.com 2019 - 2024. All rights reserved.