Текущая схема базы данных - У меня есть эти 3 таблицы, Curriculum
, Assignment
и Student
. Каждому Student
присваивается отношение Curriculum
- ForeginKey
между учеником и учебным планом. Каждый Assignment
имеет такое же отношение с Curriculum
, используя ForeginKey.
Постановка задачи - Для каждого Curriculum
существует около 100 Assignments
, проблема в том, что некоторые студенты должны быть освобождены от некоторых заданий, поэтому я хочу, чтобы я могосвободите ученика от заданий 1, 2 и 3, но пусть остальные ученики выполнят задания 1, 2 и 3.
Мое решение, которое не удалось - Я пытался создатьManyToManyField
в Student
таблице относительно Assignment
таблицы. Однако необходимость добавления сотен заданий вручную будет смехотворно трудоемкой для каждого студента.
class Curriculum(models.Model):
name = models.CharField(max_length=50, null=False)
subject = models.CharField(max_length=30, choices=SUBJECT)
grade_level = models.CharField(max_length=20, choices=CURRICULUMGRADE, null=False)
tracking = models.CharField(max_length=20, choices=TRACKING, null=False)
required = models.CharField(max_length=20, null=True)
recorded_from = models.CharField(max_length=20, choices=RECORDED, null=False)
semesterend = models.CharField(max_length=50, null=True)
username = models.CharField(max_length=50, null=True)
password = models.CharField(max_length=50, null=True)
loginurl = models.CharField(max_length=100, null=True)
weight = models.IntegerField(null=True)
level = models.CharField(max_length=20, choices=LEVEL, null=False)
class Student(models.Model):
epicenter_id = models.CharField(
null=False, blank=False, unique=True, max_length=10
)
last_name = models.CharField(null=False, max_length=50)
first_name = models.CharField(null=False, max_length=50)
email = models.EmailField(null=False, max_length=120)
phone_number = models.CharField(null=False, max_length=50)
additional_email = models.EmailField(max_length=120, null=True)
additional_phone_number = models.CharField(max_length=20, null=True)
grade = models.CharField(max_length=20, choices=GRADELEVEL, null=False)
curriculum = models.ForeginKey('curriculum', null=True, blank=True, on_delete=models.SET_NULL)
class Assignment(models.Model):
standard = models.ManyToManyField(
Standard)
curriculum = models.ForeignKey(
Curriculum, on_delete=models.CASCADE, related_name="curriculum_assignment"
)
name = models.CharField(max_length=500, null=False)
description = models.CharField(max_length=500, null=False)
status = models.CharField(max_length=30, choices=STATUS, null=False)
type_of = models.CharField(max_length=30, choices=TYPE, null=False)