From a00bd376fa427ed2d98b7ab06f124024a7808ee4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bodor=20M=C3=A1t=C3=A9?= <bmate711@gmail.com> Date: Fri, 7 Feb 2020 09:57:07 +0100 Subject: [PATCH] Fix serializer bug --- src/document/serializers.py | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/src/document/serializers.py b/src/document/serializers.py index f1c209f..15909a4 100644 --- a/src/document/serializers.py +++ b/src/document/serializers.py @@ -8,30 +8,42 @@ _max_count = 1 class DocumentSerializer(serializers.ModelSerializer): uploaded_by = serializers.HiddenField(default=CurrentUserProfileDefault()) uploaded_by_name = serializers.SerializerMethodField() - file = serializers.SerializerMethodField() + file_url = serializers.SerializerMethodField() class Meta: model = models.Document - fields = ( + fields = [ 'uploaded_by', 'uploaded_at', 'name', 'description', + 'file_url', 'file', 'uploaded_by_name', 'solution', - ) + ] + + read_only_fields = [ + 'uploaded_by', + 'uploaded_at', + 'file_url', + 'uploaded_by_name', + ] + + extra_kwargs = { + 'file': {'write_only': True}, + } def to_representation(self, instance): data = super().to_representation(instance) - if not data['file']: - data['file'] = "" + if not data['file_url']: + data['file_url'] = "" return data def get_uploaded_by_name(self, obj): return obj.uploaded_by.full_name - def get_file(self, obj): + def get_file_url(self, obj): return f"/api/v1/documents/{obj.id}/download/" def validate_solution(self, value): @@ -42,5 +54,5 @@ class DocumentSerializer(serializers.ModelSerializer): uploaded_by=profile, solution=value).count() if count >= _max_count: raise serializers.ValidationError( - f'You cant upload more than {max_count} document to one solution!') + f'You cant upload more than {_max_count} document to one solution!') return value -- GitLab