from django.db import models from django.utils import timezone import datetime
class Employee(models.Model): 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)
Performing system checks...
System check identified no issues (0 silenced). March 04, 2023 - 12:37:39 Django version 4.1, using settings 'CRMSolutions.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with 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 - ERROR - post - 46 - employee Record creation failed: (1062, "Duplicate entry '23SNS0002' for key 'employee_employee .emp_id'") Internal Server Error: /employee/emp/ 2023-03-04 12:38:20,500 - django.request - ERROR - log_response - 241 - Internal Server Error: /employee/emp/ [04/Mar/2023 12:38:20] "POST /employee/emp/ HTTP/1.1" 500 73
i want to generate employee id example: 23SNS0001,23SNSNS0002,23SNS0003.... and so on... as unique and should not form duplicate...emp_id. above shown my models create duplicate .... even if i set unique = True. i think i have to change my code in save function that i have used...can help with problem to solve