У меня есть проблема, в которой я застрял уже несколько дней и не могу найти решение, которое становится очень неприятным.
В моих моделях у меня есть Companies
. Каждая компания имеет 2 Group
для аутентификации и авторизации: Супервизор и не Супервизор .
Из этих 2 Group
будет несколько динамических подгрупп для каждой компании, которую я называю Employee Type
. Эти EmployeeType
могут быть созданы администратором компании на панели администратора, а затем назначены одному из Group
s.
Подведем итог: каждый Company
будет иметь 2 Group
s. Каждый Group
будет иметь неограниченное количество EmployeeType
с. Каждый EmployeeType
будет иметь неограниченное количество Users
.
Несмотря на то, что Group
одинаковы во всех компаниях, EmployeeType
могут иметь одинаковое имя, но не должны быть доступны для совместного использования. между компаниями.
class Company(models.Model):
....
class EmployeeType(models.Model):
....
employee_type = models.CharField(
max_length=32,
default='Server'
)
group = models.ForeignKey(
Group,
on_delete=models.CASCADE,
null=True
)
class User(AbstractUser):
....
company = models.ForeignKey(
Company,
on_delete=models.CASCADE,
null=True
)
employee_type = models.ForeignKey(
EmployeeType,
on_delete=models.CASCADE,
null=True,
)
- Как я могу сделать так, чтобы
Company A
мог иметь свои собственные EmployeeType
s, а Company B
мог иметь свои EmployeeType
s, но имяEmployeeType
в обеих компаниях могут быть одинаковыми, при этом также следя за тем, чтобы Company A
не видел Company B
s EmployeeType
s
Извинения, если это кажется очень простым, но я запутался, когдаEmployeeType
с становятся динамическими. Когда я пытаюсь это сделать, у меня возникает круговая логика, и я не могу обернуть голову вокруг правильной структуры.