StudE-Backend/stude/subjects/models.py

61 lines
1.9 KiB
Python
Raw Normal View History

2023-06-27 18:15:31 +08:00
from django.db import models
from year_levels.models import Year_Level
from semesters.models import Semester
# Create your models here.
class Subject(models.Model):
name = models.CharField(max_length=64)
code = models.CharField(max_length=16)
courses = models.ManyToManyField(
'courses.Course', through='subjects.SubjectCourse', related_name='SubjectCourse_subject')
students = models.ManyToManyField(
'accounts.CustomUser', blank=True)
2023-06-27 18:15:31 +08:00
2023-07-17 21:23:27 +08:00
year_levels = models.ManyToManyField(
'year_levels.Year_Level', through='subjects.SubjectYearLevel', related_name='SubjectYearLevel_subject')
2023-07-17 21:23:27 +08:00
semesters = models.ManyToManyField(
'semesters.Semester', through='subjects.SubjectSemester', related_name='SubjectSemester_subject')
2023-06-27 18:15:31 +08:00
def __str__(self):
return self.name
class SubjectCourse(models.Model):
subject = models.ForeignKey('subjects.Subject', on_delete=models.CASCADE)
course = models.ForeignKey(
'courses.Course', on_delete=models.CASCADE, null=True)
def __str__(self):
return f'Subject={self.subject.name}, Course={self.course.name}'
class Meta:
unique_together = [['subject', 'course']]
class SubjectYearLevel(models.Model):
subject = models.ForeignKey(
'subjects.Subject', on_delete=models.CASCADE)
year_level = models.ForeignKey(
'year_levels.Year_Level', on_delete=models.CASCADE)
def __str__(self):
return f'Subject={self.subject.name}, Year Level={self.year_level.name}'
class Meta:
unique_together = [['subject', 'year_level']]
class SubjectSemester(models.Model):
subject = models.ForeignKey(
'subjects.Subject', on_delete=models.CASCADE)
semester = models.ForeignKey(
'semesters.Semester', on_delete=models.CASCADE)
def __str__(self):
return f'Subject={self.subject.name}, Semester={self.semester.name}'
class Meta:
unique_together = [['subject', 'semester']]