from rest_framework import serializers from core.models import Groep, Persoon, Subgroep from .models import Leerplein, SubgroepGroep class LeerpleinSerializer(serializers.ModelSerializer): groepen = serializers.PrimaryKeyRelatedField( many=True, queryset=Groep.objects.all(), required=False ) subgroepen = serializers.PrimaryKeyRelatedField( many=True, queryset=Subgroep.objects.all(), required=False ) leerlingen = serializers.PrimaryKeyRelatedField( many=True, queryset=Persoon.objects.filter(rol="leerling"), required=False ) medewerkers = serializers.PrimaryKeyRelatedField( many=True, queryset=Persoon.objects.exclude(rol="leerling"), required=False ) groepen_namen = serializers.SerializerMethodField() subgroepen_namen = serializers.SerializerMethodField() leerlingen_namen = serializers.SerializerMethodField() medewerkers_namen = serializers.SerializerMethodField() class Meta: model = Leerplein fields = [ "id", "naam", "omschrijving", "actief", "groepen", "subgroepen", "leerlingen", "medewerkers", "groepen_namen", "subgroepen_namen", "leerlingen_namen", "medewerkers_namen", "aangemaakt_op", ] read_only_fields = ["aangemaakt_op"] def get_groepen_namen(self, obj): return [{"id": g.id, "naam": g.naam} for g in obj.groepen.all()] def get_subgroepen_namen(self, obj): return [{"id": s.id, "naam": s.naam} for s in obj.subgroepen.all()] def get_leerlingen_namen(self, obj): return [{"id": p.id, "naam": p.volledige_naam} for p in obj.leerlingen.all()] def get_medewerkers_namen(self, obj): return [{"id": p.id, "naam": p.volledige_naam} for p in obj.medewerkers.all()] class SubgroepGroepSerializer(serializers.ModelSerializer): groep_naam = serializers.CharField(source="groep.naam", read_only=True) subgroep_naam = serializers.CharField(source="subgroep.naam", read_only=True) class Meta: model = SubgroepGroep fields = ["id", "groep", "groep_naam", "subgroep", "subgroep_naam"]