Как сделать так, чтобы два многозначных поля в модели имели разные значения
У меня есть две упрощенные модели, как показано ниже:
class Courses:
name = models.CharField(_("Course name"), max_length=256)
class School:
main_courses = models.ManyToManyField(_("Main Courses"), to="course.Courses", related_name="maincourses", blank=True)
enhancement_courses = models.ManyToManyField(_("Enhancement Courses"), to="course.Courses" related_name="enhancementcourses", blank=True)
main_courses
и enhancement_courses
будут хранить список Courses. Но мне нужно убедиться, что их значения не будут равны. Например, если в школе_1, main_courses
это математика, физика, то enhancement_courses
не может быть этими значениями. Какой самый простой способ сделать это в django?
Вам просто нужны разные through
модели для каждой из них:
class MainCourses(models.Model):
name = models.CharField(_("Course name"), max_length=256)
class EnhancementCourses(models.Model):
name = models.CharField(_("Course name"), max_length=256)
class School(models.Model):
main_courses = models.ManyToManyField(_("Main Courses"), through="course.MainCourses", related_name="maincourses", blank=True)
enhancement_courses = models.ManyToManyField(_("Enhancement Courses"), through="course.EnhancementCourses" related_name="enhancementcourses", blank=True)
UPDATE
Вы можете использовать абстрактные модели для моделей обоих курсов:
class BaseCourses(models.Model):
name = models.CharField(_("Course name"), max_length=256)
class Meta:
abstract = True
class MainCourses(BaseCourses):
pass
class EnhancementCourses(BaseCourses):
pass