Модель django для получения конкретного HTML-вывода без излишеств в модели
У меня есть 3 модели (супервайзер, студенты и распределение) . Я создаю систему распределения, в которой несколько студентов могут быть распределены к одному руководителю. Теперь я хочу, чтобы моя модель могла выдавать следующий результат
Пример того, как я хочу вывести результат
Вот структура моей модели
class StudentProfile(models.Model):
stud_id = models.UUIDField(default=uuid.uuid4, primary_key=True, unique=True)
user_id = models.OneToOneField(User,blank=True, null=True, on_delete=models.CASCADE)
programme_id = models.ForeignKey(Programme, on_delete=models.CASCADE)
session_id = models.ForeignKey(Sessi`**enter code here**`on, on_delete=models.CASCADE)
type_id = models.ForeignKey(StudentType, on_delete=models.CASCADE)
dept_id = models.ForeignKey(Department, on_delete=models.CASCADE)
class SupervisorProfile(models.Model):
super_id = models.UUIDField(default=uuid.uuid4, primary_key=True, unique=True)
user_id = models.ForeignKey(User, on_delete=models.CASCADE)
dept_id = models.ForeignKey(Department, on_delete=models.CASCADE)
class Allocate(models.Model):
allocate_id = models.UUIDField(default=uuid.uuid4, primary_key=True, unique=True)
stud_id = models.ForeignKey(StudentProfile, on_delete=models.CASCADE)
super_id = models.ForeignKey(SupervisorProfile, on_delete=models.CASCADE)
Теперь я сосредоточился на модели Allocate, где происходит распределение, и там много избыточности Любые предложения о том, как улучшить мою модель, чтобы убрать избыточность в получении ожидаемого HTML результата, были бы признательны 🙏
Насколько я понимаю, вам нужно назначить нескольких студентов одному руководителю.
Для этого достаточно использовать ForeignKey в классе StudentProfile.
Как показано ниже:
supervisor=models.ForeignKey(Supervisor,on_delete=models.DO_NOTHING)
Но если вам нужно связать студента с несколькими супервизорами, вам следует использовать ManyToManyField
ManyToManyField автоматически создает третью таблицу типа class Allocate себя.
Для получения дополнительной информации обратитесь к hire.
Также можно сократить избыточность, учитывая отдел.
Однако
Не похоже, что меньше избыточности можно найти в sql базе данных.
Надеюсь, это было полезно