from rest_framework import serializers from core.apps.evaluation.models import DocumentModel, AutoEvaluationModel, DocumentcategoryModel from core.apps.evaluation.serializers.documentcategory import ListDocumentcategorySerializer class BaseDocumentSerializer(serializers.ModelSerializer): category = ListDocumentcategorySerializer(read_only=True) class Meta: model = DocumentModel fields = [ "id", "title", "document", "category", "created_at", "updated_at" ] class ListDocumentSerializer(BaseDocumentSerializer): class Meta(BaseDocumentSerializer.Meta): ... def get_document(self, obj): request = self.context.get("request") if obj.document: if request: return request.build_absolute_uri(obj.document.url) return obj.document.url return None class RetrieveDocumentSerializer(BaseDocumentSerializer): class Meta(BaseDocumentSerializer.Meta): ... def get_document(self, obj): request = self.context.get("request") if obj.document: if request: return request.build_absolute_uri(obj.document.url) return obj.document.url return None class CreateDocumentSerializer(BaseDocumentSerializer): auto_evaluation = serializers.PrimaryKeyRelatedField(queryset=AutoEvaluationModel.objects.all()) category = serializers.PrimaryKeyRelatedField(queryset=DocumentcategoryModel.objects.all()) class Meta(BaseDocumentSerializer.Meta): fields = [ "id", "title", "auto_evaluation", "document", "category", "created_at", "updated_at" ]