Я пытаюсь понять, как правильно настроить мои модели, чтобы иметь отношение многие ко многим, я заметил, что существует опция ManyToManyField при создании моделей, но я не могу понять логику этогои как правильно заставить это работать.Я хотел бы поделиться своим кодом и объяснить по пути.
from django.db import models
class Major(models.Model):
name = models.CharField(max_length=30, db_index=True)
class School(models.Model):
name = models.Charfield(max_length=50, db_index=True)
majors = models.ManyToManyField(Major)
class Professor(models.Model):
ProfessorIDS = models.IntegerField()
ProfessorName = models.CharField(max_length=100)
ProfessorRating = models.DecimalField(decimal_places=2,max_digits=4)
NumberOfRatings = models.CharField(max_length=50)
school = models.ForeignKey(School , on_delete=models.CASCADE)
major = models.ForeignKey(Major , on_delete=models.CASCADE)
Обратите внимание, что в школе TABLE (класс) есть много ко многим для майоров, что по сути то, что я хочу, цельиметь базу данных, позволяющую хранить несколько специальностей в отдельной школе.
Проведя некоторые исследования, я пришел к выводу, что в этом нет смысла, было бы лучше создать таблицу мостов, поэтому я решилчтобы создать мою модель следующим образом ...
from django.db import models
class Major(models.Model):
name = models.CharField(max_length=30, db_index=True)
class School(models.Model):
name = models.Charfield(max_length=50, db_index=True)
class School_Majors(models.Model):
school = models.ForeignKey(School, on_delete=models.CASCADE)
major = models.ForeignKey(Major, on_delete=models.CASCADE)
class Professor(models.Model):
ProfessorIDS = models.IntegerField()
ProfessorName = models.CharField(max_length=100)
ProfessorRating = models.DecimalField(decimal_places=2,max_digits=4)
NumberOfRatings = models.CharField(max_length=50)
school = models.ForeignKey(School , on_delete=models.CASCADE)
major = models.ForeignKey(Major , on_delete=models.CASCADE)
Разве это не было бы более правильным способом настройки базы данных для добавления и удаления нескольких основных предметов из школ и наоборот?