У меня есть 5 таблиц User
(т. Е. Сотрудник), Positions
и Emp_position
(это таблица отношений между сотрудником и должностями). У меня есть таблица отделов, которая содержит список всех отделов в моей компании и таблицу взаимосвязей Works_in
, которая сопоставляет User
(сотрудник) с отделом. Теперь в таблице Works_in, когда я сопоставляю User
(Сотрудник) с Department
, я хочу проверить, какие данные я вставляю в таблицу Works_in (взаимосвязь). То есть при сопоставлении сотрудника с отделом уже назначен менеджер или нет.
Пример:
Сотрудник
Himanshu
Bassi
BB
Позиция
Developer
Manager
Tester
Emp_position (таблица взаимосвязей)
Employee Position
Himanshu Developer
Bassi Manager
BB Manager
Отдел
Web UI
Data Analysis
Machine Learning
Works_in (таблица отношений)
Employee Department
Himanshu Web UI
Bassi Web UI
BB Web UI # this is wrong, which needs to be checked
Каждый сотрудник будет сопоставлен с отделом, но в отделе не должно быть нескольких менеджеров. Здесь, поскольку Басси и БиБи - менеджер, мы не хотим, чтобы они были сопоставлены с одним и тем же отделом. Поэтому для этой цели я хочу проверить, прежде чем данные BB Web UI
были вставлены в нашу таблицу Works_in, есть ли у отдела, который будет сопоставлен с отделом, уже назначен менеджер. Поэтому я хочу включить проверку перед вставкой данных в мою таблицу Works_in.
Вот мой файл models.py .
from django.contrib.auth.models import User
class Position(models.Model):
position_name = models.CharField(max_length=20, unique=True)
def __str__(self):
return self.position_name
class Emp_position(models.Model):
emp_uname = models.ForeignKey(User, related_name='emp_name', to_field='username', on_delete=models.CASCADE, unique=True)
position_name = models.ForeignKey(Position, related_name='position', to_field='position_name', on_delete=models.CASCADE)
def __str__(self):
return str(self.emp_uname) + " " + str(self.position_name)
class Department(models.Model):
name = models.CharField(max_length=20, unique=True)
def __str__(self):
return self.name
class Works_in(models.Model):
emp_name = models.ForeignKey(User, related_name='works_emp_name', to_field='username', on_delete=models.CASCADE)
dept_name = models.ForeignKey(Department, blank=False, null=False, to_field='name',related_name='works_on_dept', on_delete=models.CASCADE)
def __str__(self):
return str(self.emp_name) + " " + str(self.dept_name)