49 lines
1.6 KiB
Python
49 lines
1.6 KiB
Python
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
|