begin api
This commit is contained in:
75
education/serializers.py
Normal file
75
education/serializers.py
Normal file
@@ -0,0 +1,75 @@
|
||||
from rest_framework import serializers
|
||||
from .models import AcademicYear, Department, DepartmentHead, Specialty, Group, Student
|
||||
|
||||
class AcademicYearSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = AcademicYear
|
||||
fields = "__all__"
|
||||
|
||||
|
||||
class DepartmentSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Department
|
||||
fields = "__all__"
|
||||
|
||||
|
||||
class DepartmentHeadSerializer(serializers.ModelSerializer):
|
||||
head_name = serializers.SerializerMethodField()
|
||||
|
||||
class Meta:
|
||||
model = DepartmentHead
|
||||
fields = ["id", "department", "head", "head_name"]
|
||||
|
||||
def get_head_name(self, obj):
|
||||
return f"{obj.head.first_name} {obj.head.last_name}"
|
||||
|
||||
|
||||
class SpecialtySerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Specialty
|
||||
fields = "__all__"
|
||||
|
||||
|
||||
class GroupSerializer(serializers.ModelSerializer):
|
||||
curator_name = serializers.SerializerMethodField()
|
||||
|
||||
class Meta:
|
||||
model = Group
|
||||
fields = ["id", "name", "curator", "specialty", "curator_name"]
|
||||
|
||||
def get_curator_name(self, obj):
|
||||
if obj.curator:
|
||||
return f"{obj.curator.first_name} {obj.curator.last_name}"
|
||||
return None
|
||||
|
||||
|
||||
class StudentSerializer(serializers.ModelSerializer):
|
||||
first_name = serializers.CharField(source="account.first_name")
|
||||
last_name = serializers.CharField(source="account.last_name")
|
||||
middle_name = serializers.CharField(source="account.middle_name")
|
||||
phone = serializers.CharField(source="account.phone")
|
||||
email = serializers.CharField(source="account.email")
|
||||
|
||||
class Meta:
|
||||
model = Student
|
||||
fields = [
|
||||
"id",
|
||||
"group",
|
||||
"first_name",
|
||||
"last_name",
|
||||
"middle_name",
|
||||
"phone",
|
||||
"email",
|
||||
]
|
||||
|
||||
def update(self, instance, validated_data):
|
||||
account_data = validated_data.pop("account", {})
|
||||
instance.account.first_name = account_data.get("first_name", instance.account.first_name)
|
||||
instance.account.last_name = account_data.get("last_name", instance.account.last_name)
|
||||
instance.account.middle_name = account_data.get("middle_name", instance.account.middle_name)
|
||||
instance.account.phone = account_data.get("phone", instance.account.phone)
|
||||
instance.account.email = account_data.get("email", instance.account.email)
|
||||
instance.account.save()
|
||||
return super().update(instance, validated_data)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user