С чего начинать проектирования базы данных?
Начните с изучения нормальных форм данных. вики
Не используй термины из СУБД - таблица, поля и тд
При работе с джанго, часть функционала субд используеться за сценой и не требует твоего вмешательства
Однако, проектирование моделей требует от тебя использования 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)
    # ...
В принципе, нет никакой необходимости сразу делать идеальную конструкцию - можно пошагово добавлять акторов и их функционал