Files
Pulse-API/solution/pulse/api/posts/serializers.py
T

39 lines
1.1 KiB
Python

from django.conf import settings
from rest_framework import serializers
from api.posts.models import Post
class PostSerializer(serializers.ModelSerializer):
# ruff: noqa: N815
author = serializers.ReadOnlyField(source="author.username")
likesCount = serializers.SerializerMethodField()
dislikesCount = serializers.SerializerMethodField()
class Meta:
model = Post
fields = [
"id",
"content",
"author",
"tags",
"createdAt",
"likesCount",
"dislikesCount",
]
read_only_fields = ["id", "createdAt", "likesCount", "dislikesCount"]
# ruff: noqa: N802
def get_likesCount(self, obj):
return obj.likes.count()
def get_dislikesCount(self, obj):
return obj.dislikes.count()
def validate_tags(self, value):
for tag in value:
if len(tag) > settings.MAX_TAG_LENGTH:
error = "Each tag must be 20 characters or fewer."
raise serializers.ValidationError(error)
return value