Динамическое создание пользователей в django

Я создаю веб-приложение со следующими пользователями,

  1. National Director
  2. Regional Director
  3. Project Coordinator
  4. Agent

Ожидаемый результат: Национальный директор должен иметь возможность создать регионального директора, региональный директор должен иметь возможность создать координатора проекта, а координатор проекта должен иметь возможность создать агентов.

Вопрос: Как я должен сделать представления и формы для достижения этого?

#Модели

class User(AbstractUser):
pass

class National_Director(models.Model):
GENDER = (
    ('Male', 'Male'),
    ('Female', 'Female'),
)
user = OneToOneField(User, null=True, blank=True, on_delete=models.SET_NULL)
gender = models.CharField(max_length=20, null=False, blank=False, choices=GENDER)
id_no = id_no = models.CharField(max_length=150, null=False, blank=False, unique=True)
address = models.TextField(null=False, blank=False)
created_at = models.DateTimeField(auto_now_add=True)

class Regional_Director(models.Model):
GENDER = (
    ('Male', 'Male'),
    ('Female', 'Female'),
)
user = OneToOneField(User, null=True, blank=True, on_delete=models.SET_NULL)
REGION = (
    ('North', 'Northern Region'),
    ('East', 'Eastern Region'),
    ('West', 'Western Region'),
    ('South', 'Southern Region'),
)
region = models.CharField(max_length=20, null=False, blank=False, choices=REGION)
gender = models.CharField(max_length=20, null=False, blank=False, choices=GENDER)
national_director = models.ForeignKey(National_Director, null=True, blank=True, 
on_delete=SET_NULL)
id_no = id_no = models.CharField(max_length=150, null=False, blank=False, unique=True)
address = models.TextField(null=False, blank=False)
created_at = models.DateTimeField(auto_now_add=True)

class Coordinator(models.Model):
GENDER = (
    ('Male', 'Male'),
    ('Female', 'Female'),
)
user = OneToOneField(User, null=True, blank=True, on_delete=models.SET_NULL) 
regional_director = models.ForeignKey(Regional_Director, null=True, blank=True, 
on_delete=SET_NULL)
region = models.CharField(max_length=15, null=True, blank=True)
id_no = id_no = models.CharField(max_length=150, null=False, blank=False, unique=True)
address = models.TextField(null=False, blank=False)
gender = models.CharField(max_length=20, null=False, blank=False, choices=GENDER)
created_at = models.DateTimeField(auto_now_add=True)

class Agent(models.Model):
GENDER = (
    ('Male', 'Male'),
    ('Female', 'Female'),
)
user = OneToOneField(User, null=True, blank=True, on_delete=models.SET_NULL)
project_coordinator = models.ForeignKey(Coordinator, null=True, blank=True, 
on_delete=SET_NULL)
region = models.CharField(max_length=15, null=True, blank=True)
id_no = id_no = models.CharField(max_length=150, null=False, blank=False, unique=True)
address = models.TextField(null=False, blank=False)
gender = models.CharField(max_length=20, null=False, blank=False, choices=GENDER)
created_at = models.DateTimeField(auto_now_add=True)
Вернуться на верх