Не используй термины из СУБД - таблица, поля и тд
При работе с джанго, часть функционала субд используеться за сценой и не требует твоего вмешательства
Однако, проектирование моделей требует от тебя использования 3НФ
Итак тебе нужно почитать, как сделать CustomUser в джанго и как ты будешь расширять
управление правами доступа для ограничения доступа директор_может_управлять_только_своей_школой и тп
spoilerclass School(models.Model):
name = models.CharField(max_length=200)
address = models.CharField(max_length=200)
class MyUser(AbstractBaseUser):
GROUP_DIRECT = 0
GROUP_TEACHER = 1
# ...
GROUP_PARENT = 8
GROUP_STUDENT = 9
GROUP = (
(GROUP_DIRECT, 'Director'),
(GROUP_TEACHER, 'Teacher'),
# ...
(GROUP_PARENT, 'Parent'),
(GROUP_STUDENT, 'Student'),
)
name = models.CharField(max_length=200)
email = models.EmailField()
group = models.IntegerField(choices=GROUP)
class Lesson(models.Model):
name = models.CharField(max_length=200)
# ...
school = models.ForeignKey(School)
class Director(MyUser):
description = models.CharField(max_length=200)
# ...
school = models.ForeignKey(School)
class Teacher(MyUser):
description = models.CharField(max_length=200)
# ...
school = models.ForeignKey(School)
class Student(MyUser):
description = models.CharField(max_length=200)
# ...
school = models.ForeignKey(School)
class Parent(MyUser):
description = models.CharField(max_length=200)
children = models.ManyToManyField(Student)
# ...
В принципе, нет никакой необходимости сразу делать идеальную конструкцию - можно пошагово добавлять акторов и их функционал