Compare commits
2 Commits
master
...
Creating_D
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
908e3edc54 | ||
|
|
b6ecd4fcb6 |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,5 +1,7 @@
|
|||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from .models import Classes
|
from .models import Classes, Subject, Teacher
|
||||||
|
|
||||||
# Register your models here.
|
# Register your models here.
|
||||||
admin.site.register(Classes)
|
admin.site.register(Classes)
|
||||||
|
admin.site.register(Subject)
|
||||||
|
admin.site.register(Teacher)
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
# Generated by Django 5.0.1 on 2024-06-09 22:23
|
# Generated by Django 5.0.6 on 2024-06-23 06:06
|
||||||
|
|
||||||
|
import django.db.models.deletion
|
||||||
from django.db import migrations, models
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
@@ -11,6 +12,22 @@ class Migration(migrations.Migration):
|
|||||||
]
|
]
|
||||||
|
|
||||||
operations = [
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Subject',
|
||||||
|
fields=[
|
||||||
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('acronym', models.CharField(max_length=200)),
|
||||||
|
('full_name', models.CharField(max_length=200)),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Teacher',
|
||||||
|
fields=[
|
||||||
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('First_Name', models.CharField(max_length=200)),
|
||||||
|
('Last_Name', models.CharField(max_length=200)),
|
||||||
|
],
|
||||||
|
),
|
||||||
migrations.CreateModel(
|
migrations.CreateModel(
|
||||||
name='Classes',
|
name='Classes',
|
||||||
fields=[
|
fields=[
|
||||||
@@ -18,6 +35,9 @@ class Migration(migrations.Migration):
|
|||||||
('MJC_Class_Name', models.CharField(max_length=200)),
|
('MJC_Class_Name', models.CharField(max_length=200)),
|
||||||
('Common_Class_Name', models.CharField(max_length=200)),
|
('Common_Class_Name', models.CharField(max_length=200)),
|
||||||
('MJC_Units', models.IntegerField()),
|
('MJC_Units', models.IntegerField()),
|
||||||
|
('Section_Number', models.CharField(max_length=200)),
|
||||||
|
('In_Subject', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='Subject', to='classes.subject')),
|
||||||
|
('Instructor', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='Teacher', to='classes.teacher')),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -0,0 +1,22 @@
|
|||||||
|
# Generated by Django 5.0.6 on 2024-06-23 06:10
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('classes', '0001_initial'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.RemoveField(
|
||||||
|
model_name='classes',
|
||||||
|
name='Instructor',
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='classes',
|
||||||
|
name='Instructor',
|
||||||
|
field=models.ManyToManyField(related_name='Teacher', to='classes.teacher'),
|
||||||
|
),
|
||||||
|
]
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
classes/migrations/__pycache__/0003_subject.cpython-310.pyc
Normal file
BIN
classes/migrations/__pycache__/0003_subject.cpython-310.pyc
Normal file
Binary file not shown.
Binary file not shown.
BIN
classes/migrations/__pycache__/0005_teacher.cpython-310.pyc
Normal file
BIN
classes/migrations/__pycache__/0005_teacher.cpython-310.pyc
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,10 +1,28 @@
|
|||||||
from django.db import models
|
from django.db import models
|
||||||
|
|
||||||
# Create your models here.
|
# Create your models here.
|
||||||
|
|
||||||
|
class Subject(models.Model):
|
||||||
|
acronym = models.CharField(max_length=200)
|
||||||
|
full_name = models.CharField(max_length=200)
|
||||||
|
|
||||||
|
def __str__(self) -> str:
|
||||||
|
return f"{self.pk} {self.acronym}: {self.full_name}"
|
||||||
|
|
||||||
|
class Teacher(models.Model):
|
||||||
|
First_Name = models.CharField(max_length=200)
|
||||||
|
Last_Name = models.CharField(max_length=200)
|
||||||
|
|
||||||
|
def __str__(self) -> str:
|
||||||
|
return f"{self.pk} {self.Last_Name}, {self.First_Name}"
|
||||||
|
|
||||||
class Classes(models.Model):
|
class Classes(models.Model):
|
||||||
MJC_Class_Name = models.CharField(max_length=200)
|
MJC_Class_Name = models.CharField(max_length=200)
|
||||||
Common_Class_Name = models.CharField(max_length=200)
|
Common_Class_Name = models.CharField(max_length=200)
|
||||||
MJC_Units = models.IntegerField()
|
MJC_Units = models.IntegerField()
|
||||||
|
Section_Number = models.CharField(max_length=200)
|
||||||
|
Instructor = models.ManyToManyField(Teacher, related_name="Teacher")
|
||||||
|
In_Subject = models.ForeignKey(Subject, related_name="Subject", on_delete=models.DO_NOTHING)
|
||||||
|
|
||||||
def __str__(self) -> str:
|
def __str__(self) -> str:
|
||||||
return self.MJC_Class_Name
|
return self.MJC_Class_Name
|
||||||
BIN
db.sqlite3
BIN
db.sqlite3
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,4 +1,4 @@
|
|||||||
# Generated by Django 5.0.6 on 2024-06-09 21:50
|
# Generated by Django 5.0.6 on 2024-06-23 06:06
|
||||||
|
|
||||||
import django.db.models.deletion
|
import django.db.models.deletion
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
@@ -10,6 +10,8 @@ class Migration(migrations.Migration):
|
|||||||
initial = True
|
initial = True
|
||||||
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
('classes', '0001_initial'),
|
||||||
|
('university', '0001_initial'),
|
||||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -19,7 +21,9 @@ class Migration(migrations.Migration):
|
|||||||
fields=[
|
fields=[
|
||||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
('w_number', models.IntegerField()),
|
('w_number', models.IntegerField()),
|
||||||
('classes', models.CharField(max_length=200)),
|
('classes', models.ManyToManyField(to='classes.classes')),
|
||||||
|
('desired_university', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='university', to='university.university')),
|
||||||
|
('major', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='student_major', to='university.agreement')),
|
||||||
('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
|
('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -1,23 +0,0 @@
|
|||||||
# Generated by Django 5.0.1 on 2024-06-09 22:26
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('classes', '0001_initial'),
|
|
||||||
('student', '0001_initial'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.RemoveField(
|
|
||||||
model_name='student',
|
|
||||||
name='classes',
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='student',
|
|
||||||
name='classes',
|
|
||||||
field=models.ManyToManyField(to='classes.classes'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,12 +1,15 @@
|
|||||||
from django.db import models
|
from django.db import models
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
from classes.models import Classes
|
from classes.models import Classes
|
||||||
|
from university.models import University, Agreement
|
||||||
|
|
||||||
# Create your models here.
|
# Create your models here.
|
||||||
class Student(models.Model):
|
class Student(models.Model):
|
||||||
w_number = models.IntegerField()
|
w_number = models.IntegerField()
|
||||||
user = models.OneToOneField(User, on_delete=models.CASCADE)
|
user = models.OneToOneField(User, on_delete=models.CASCADE)
|
||||||
classes = models.ManyToManyField(Classes)
|
classes = models.ManyToManyField(Classes)
|
||||||
|
desired_university = models.ForeignKey(University, related_name="university", on_delete=models.DO_NOTHING)
|
||||||
|
major = models.ForeignKey(Agreement, related_name="student_major", on_delete=models.DO_NOTHING)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.user.username.capitalize()
|
return self.user.username.capitalize()
|
||||||
@@ -1,7 +1,20 @@
|
|||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
from .models import Student
|
from .models import Student
|
||||||
|
from classes.models import Classes
|
||||||
|
|
||||||
class StudentSerializer(serializers.ModelSerializer):
|
class StudentSerializer(serializers.ModelSerializer):
|
||||||
|
|
||||||
|
classes = serializers.SlugRelatedField(
|
||||||
|
many = True,
|
||||||
|
read_only = True,
|
||||||
|
slug_field = "MJC_Class_Name"
|
||||||
|
)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Student
|
model = Student
|
||||||
fields = ["id", "user", "w_number", "classes"]
|
fields = ["id", "user", "w_number", "classes"]
|
||||||
|
|
||||||
|
class RecommendedClasses(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = Classes
|
||||||
|
fields = ["id", "MJC_Class_Name", "Common_Class_Name", "MJC_Units"]
|
||||||
@@ -4,4 +4,5 @@ from . import views
|
|||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path("all_students/", views.StudentListCreate.as_view(), name="student-view-createlist"),
|
path("all_students/", views.StudentListCreate.as_view(), name="student-view-createlist"),
|
||||||
path("<int:w_number>/", views.StudentRetrieveUpdateDestroy.as_view(), name="update"),
|
path("<int:w_number>/", views.StudentRetrieveUpdateDestroy.as_view(), name="update"),
|
||||||
|
path("<int:w_number>/recommended_classes", views.RecommendedClassesView.as_view(), name="recommended"),
|
||||||
]
|
]
|
||||||
@@ -1,7 +1,10 @@
|
|||||||
|
from typing import Any
|
||||||
from django.shortcuts import render
|
from django.shortcuts import render
|
||||||
from rest_framework import generics
|
from rest_framework import generics, viewsets
|
||||||
from .models import Student
|
from .models import Student
|
||||||
from .serializers import StudentSerializer
|
from university.models import University, Agreement, Section
|
||||||
|
from .serializers import StudentSerializer, RecommendedClasses
|
||||||
|
from classes.serializers import ClassesSerializer
|
||||||
|
|
||||||
# Create your views here.
|
# Create your views here.
|
||||||
class StudentListCreate(generics.ListCreateAPIView):
|
class StudentListCreate(generics.ListCreateAPIView):
|
||||||
@@ -12,3 +15,66 @@ class StudentRetrieveUpdateDestroy(generics.RetrieveUpdateDestroyAPIView):
|
|||||||
queryset = Student.objects.all()
|
queryset = Student.objects.all()
|
||||||
serializer_class = StudentSerializer
|
serializer_class = StudentSerializer
|
||||||
lookup_field = "w_number"
|
lookup_field = "w_number"
|
||||||
|
|
||||||
|
class RecommendedClassesView(generics.ListCreateAPIView):
|
||||||
|
university = None
|
||||||
|
classes = []
|
||||||
|
serializer_class = ClassesSerializer
|
||||||
|
lookup_field = "w_number"
|
||||||
|
|
||||||
|
def myGuy(self, user):
|
||||||
|
|
||||||
|
# Grabs student and appends their classes into Classes array
|
||||||
|
for e in Student.objects.all():
|
||||||
|
for mClass in e.classes.all():
|
||||||
|
self.classes.append(mClass)
|
||||||
|
|
||||||
|
# Grabs student, desired university, and desired major agreement from university
|
||||||
|
# Finally grabs the sections from said agreement
|
||||||
|
student = Student.objects.filter(user=user)[0]
|
||||||
|
print(student)
|
||||||
|
self.university = University.objects.filter(name=student.desired_university)
|
||||||
|
agreement = Agreement.objects.filter(university=student.desired_university, major=student.major.major)
|
||||||
|
section = Section.objects.filter(agreement=agreement.first())
|
||||||
|
|
||||||
|
print(section)
|
||||||
|
|
||||||
|
return self.compareSectionsToStudent(sections=section, student=student)
|
||||||
|
|
||||||
|
def compareSectionsToStudent(self, sections, student):
|
||||||
|
mClasses = []
|
||||||
|
requiredAmount = 0
|
||||||
|
print(f"WOAHHH {sections[0]}")
|
||||||
|
|
||||||
|
# Grabs every section inside of the Agreement
|
||||||
|
for section in sections:
|
||||||
|
# print(f"\n Section Name{section.area_name} \n")
|
||||||
|
requiredAmount = section.number_of_required_courses
|
||||||
|
amount_added = 0
|
||||||
|
|
||||||
|
# Grabs every course inside of section
|
||||||
|
for mClass in section.classes.all():
|
||||||
|
if mClass in student.classes.all():
|
||||||
|
amount_added += 1
|
||||||
|
elif amount_added < requiredAmount:
|
||||||
|
mClasses.append(mClass)
|
||||||
|
|
||||||
|
# for student_course in student.classes.all():
|
||||||
|
# if(student_course == mClass and added_classes < requiredAmount):
|
||||||
|
# print(f"Match {student_course}")
|
||||||
|
# else:
|
||||||
|
# if (mClass not in mClasses):
|
||||||
|
# mClasses.append(mClass)
|
||||||
|
# added_classes+= 1
|
||||||
|
|
||||||
|
return mClasses
|
||||||
|
|
||||||
|
# self.queryset = self.classes
|
||||||
|
|
||||||
|
def get_queryset(self):
|
||||||
|
user = self.request.user
|
||||||
|
return self.myGuy(user=user)
|
||||||
|
|
||||||
|
|
||||||
|
# for agreements in self.university
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,5 +1,6 @@
|
|||||||
# Generated by Django 5.0.1 on 2024-06-10 02:49
|
# Generated by Django 5.0.6 on 2024-06-23 06:06
|
||||||
|
|
||||||
|
import django.db.models.deletion
|
||||||
from django.db import migrations, models
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
@@ -13,19 +14,10 @@ class Migration(migrations.Migration):
|
|||||||
|
|
||||||
operations = [
|
operations = [
|
||||||
migrations.CreateModel(
|
migrations.CreateModel(
|
||||||
name='Sections',
|
name='Agreement',
|
||||||
fields=[
|
|
||||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
||||||
('area_name', models.CharField(max_length=200)),
|
|
||||||
('classes', models.ManyToManyField(to='classes.classes')),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
migrations.CreateModel(
|
|
||||||
name='Agreements',
|
|
||||||
fields=[
|
fields=[
|
||||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
('major', models.CharField(max_length=200)),
|
('major', models.CharField(max_length=200)),
|
||||||
('sections', models.ManyToManyField(to='university.sections')),
|
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
migrations.CreateModel(
|
migrations.CreateModel(
|
||||||
@@ -33,7 +25,21 @@ class Migration(migrations.Migration):
|
|||||||
fields=[
|
fields=[
|
||||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
('name', models.CharField(max_length=200)),
|
('name', models.CharField(max_length=200)),
|
||||||
('agreements', models.ManyToManyField(to='university.agreements')),
|
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Section',
|
||||||
|
fields=[
|
||||||
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('area_name', models.CharField(max_length=200)),
|
||||||
|
('number_of_required_courses', models.IntegerField()),
|
||||||
|
('agreement', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='sections', to='university.agreement')),
|
||||||
|
('classes', models.ManyToManyField(related_name='classes', to='classes.classes')),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='agreement',
|
||||||
|
name='university',
|
||||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='agreements', to='university.university'),
|
||||||
|
),
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -1,22 +0,0 @@
|
|||||||
# Generated by Django 5.0.1 on 2024-06-10 02:52
|
|
||||||
|
|
||||||
from django.db import migrations
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('classes', '0001_initial'),
|
|
||||||
('university', '0001_initial'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.RenameModel(
|
|
||||||
old_name='Agreements',
|
|
||||||
new_name='Agreement',
|
|
||||||
),
|
|
||||||
migrations.RenameModel(
|
|
||||||
old_name='Sections',
|
|
||||||
new_name='Section',
|
|
||||||
),
|
|
||||||
]
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
# Generated by Django 5.0.1 on 2024-06-10 03:42
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('university', '0002_rename_agreements_agreement_rename_sections_section'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='section',
|
|
||||||
name='number_of_required_courses',
|
|
||||||
field=models.IntegerField(default=1),
|
|
||||||
preserve_default=False,
|
|
||||||
),
|
|
||||||
]
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
# Generated by Django 5.0.6 on 2024-06-18 21:20
|
|
||||||
|
|
||||||
import django.db.models.deletion
|
|
||||||
from django.db import migrations, models
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('university', '0003_section_number_of_required_courses'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.RemoveField(
|
|
||||||
model_name='agreement',
|
|
||||||
name='sections',
|
|
||||||
),
|
|
||||||
migrations.RemoveField(
|
|
||||||
model_name='university',
|
|
||||||
name='agreements',
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='agreement',
|
|
||||||
name='university',
|
|
||||||
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='university.university'),
|
|
||||||
preserve_default=False,
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='section',
|
|
||||||
name='agreement',
|
|
||||||
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='university.agreement'),
|
|
||||||
preserve_default=False,
|
|
||||||
),
|
|
||||||
]
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -12,16 +12,16 @@ class University(models.Model):
|
|||||||
|
|
||||||
class Agreement(models.Model):
|
class Agreement(models.Model):
|
||||||
major = models.CharField(max_length=200)
|
major = models.CharField(max_length=200)
|
||||||
university = models.ForeignKey(University, on_delete=models.CASCADE)
|
university = models.ForeignKey(University, related_name="agreements", on_delete=models.CASCADE)
|
||||||
|
|
||||||
def __str__(self) -> str:
|
def __str__(self) -> str:
|
||||||
return self.major
|
return f"{self.major} {self.university.name}"
|
||||||
|
|
||||||
class Section(models.Model):
|
class Section(models.Model):
|
||||||
area_name = models.CharField(max_length=200)
|
area_name = models.CharField(max_length=200)
|
||||||
number_of_required_courses = models.IntegerField()
|
number_of_required_courses = models.IntegerField()
|
||||||
classes = models.ManyToManyField(Classes)
|
classes = models.ManyToManyField(Classes, related_name="classes")
|
||||||
agreement = models.ForeignKey(Agreement, on_delete=models.CASCADE)
|
agreement = models.ForeignKey(Agreement, related_name="sections", on_delete=models.CASCADE)
|
||||||
|
|
||||||
def __str__(self) -> str:
|
def __str__(self) -> str:
|
||||||
return self.area_name
|
return f"{self.area_name} {self.agreement.major} {self.agreement.university}"
|
||||||
@@ -1,24 +1,6 @@
|
|||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
from .models import University, Agreement, Section
|
from .models import University, Agreement, Section
|
||||||
|
|
||||||
class UniversitySerializer(serializers.ModelSerializer):
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
model = University
|
|
||||||
fields = ["name"]
|
|
||||||
|
|
||||||
class AgreementsSerializer(serializers.ModelSerializer):
|
|
||||||
|
|
||||||
# sections = serializers.SlugRelatedField(
|
|
||||||
# many = True,
|
|
||||||
# read_only = True,
|
|
||||||
# slug_field = "area_name"
|
|
||||||
# )
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
model = Agreement
|
|
||||||
fields = ["major", "university"]
|
|
||||||
|
|
||||||
class SectionsSerializer(serializers.ModelSerializer):
|
class SectionsSerializer(serializers.ModelSerializer):
|
||||||
|
|
||||||
classes = serializers.SlugRelatedField(
|
classes = serializers.SlugRelatedField(
|
||||||
@@ -30,3 +12,18 @@ class SectionsSerializer(serializers.ModelSerializer):
|
|||||||
class Meta:
|
class Meta:
|
||||||
model = Section
|
model = Section
|
||||||
fields = ["area_name", "number_of_required_courses", "classes", "agreement"]
|
fields = ["area_name", "number_of_required_courses", "classes", "agreement"]
|
||||||
|
|
||||||
|
|
||||||
|
class AgreementsSerializer(serializers.ModelSerializer):
|
||||||
|
sections = SectionsSerializer(many=True)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = Agreement
|
||||||
|
fields = ["major", "university", "sections"]
|
||||||
|
|
||||||
|
class UniversitySerializer(serializers.ModelSerializer):
|
||||||
|
agreements = AgreementsSerializer(many=True)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = University
|
||||||
|
fields = ["id", "name", "agreements"]
|
||||||
Reference in New Issue
Block a user