Как добавить новый внешний ключ в мои старые модели django?

У меня есть модель Employee, теперь я хочу добавить новое поле в эту модель, которое будет внешним ключом модели Department. Я пытаюсь решить это следующим способом, но получаю ошибку типа

django.db.utils.IntegrityError: Строка в таблице 'employee_verification_employee' с первичным ключом 'UP-0319001' имеет недопустимый внешний ключ: employee_verification_employee.department_id содержит значение '03', которое не имеет соответствующего значения в employee_verification_department.id.

.
class Department(models.Model):
   name = models.CharField(max_length=100)
   id = models.CharField(primary_key=True,max_length=10)

class Employee(models.Model):
   name = models.CharField(max_length=100)
   department = models.CharField(max_length=100,choices = Departments)
   date_of_joining = models.DateField()
   employeed = models.BooleanField(default = True)
   email = models.EmailField(max_length = 254)
   blood_group = models.CharField(max_length=50)
   designation = models.CharField(max_length=100)
   image = models.ImageField(upload_to='employee_images',default = "")
   number = PhoneField(blank=True, help_text='Enter Contact Number')
   emergency_number = PhoneField(blank=True, help_text='Enter Contact Number')
   id = models.CharField(primary_key=True, max_length=200)
   department_new = models.ForeignKey(Department,on_delete=models.CASCADE,blank=True)

   def save(self, *args, **kwargs):
       if not self.id:
           nth_member = Employee.objects.filter(department = self.department).count()+1
           self.id = "UP-" + self.department + self.date_of_joining.strftime("%y")+"{:03d}".format(nth_member)
           print(self.id)
       super(Employee, self).save(*args, **kwargs)
   
   def __str__(self):
       return self.name + "--"+ self.designation``
[![enter image description here][1]][1]


 [1]: https://i.stack.imgur.com/xdRMd.png

Как сказал @trigo, все, что вам нужно, это:

class Department(models.Model):
   name = models.CharField(max_length=100)

class Employee(models.Model):
   name = models.CharField(max_length=100)
   department = models.CharField(max_length=100,choices = Departments)
   date_of_joining = models.DateField()
   employeed = models.BooleanField(default = True)
   email = models.EmailField(max_length = 254)
   blood_group = models.CharField(max_length=50)
   designation = models.CharField(max_length=100)
   image = models.ImageField(upload_to='employee_images',default = "")
   number = PhoneField(blank=True, help_text='Enter Contact Number')
   emergency_number = PhoneField(blank=True, help_text='Enter Contact Number')
   department_new = models.ForeignKey(Department,on_delete=models.CASCADE,blank=True)

А Django позаботится об остальном (идентификаторы).

Вернуться на верх