from rest_framework import serializers from django.contrib.auth import get_user_model from system.comments.models import Comment User = get_user_model() class AuthorSerializer(serializers.ModelSerializer): following = serializers.SerializerMethodField() class Meta: model = User fields = ('username', 'bio', 'image', 'following') ref_name = 'GoodsAuthorSerializer' # Указываем уникальное имя для этого сериализатора def get_following(self, obj): user = self.context.get('request').user if user.is_authenticated: return obj.followers.filter(pk=user.id).exists() return False class CommentSerializer(serializers.ModelSerializer): author = serializers.SerializerMethodField() createdAt = serializers.DateTimeField(source='created', format='%Y-%m-%dT%H:%M:%S.%fZ', required=False) updatedAt = serializers.DateTimeField(source='updated', format='%Y-%m-%dT%H:%M:%S.%fZ', required=False) body = serializers.CharField(source='content', required=True) class Meta: model = Comment fields = ['id', 'createdAt', 'updatedAt', 'body', 'author'] def get_author(self, obj): request = self.context.get('request') serializer = AuthorSerializer(obj.author, context={'request': request}) return serializer.data def create(self, validated_data): comment = Comment( **validated_data, author=self.context['request'].user, article=self.context['article'] ) comment.save() return comment