090500
This commit is contained in:
48
system/comments/serializers.py
Normal file
48
system/comments/serializers.py
Normal file
@@ -0,0 +1,48 @@
|
||||
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
|
||||
Reference in New Issue
Block a user