This commit is contained in:
@@ -88,12 +88,23 @@ class ReplySerializer(serializers.ModelSerializer):
|
||||
write_only=True,
|
||||
required=False
|
||||
)
|
||||
like_count = serializers.IntegerField(source='likes.count', read_only=True)
|
||||
is_liked = serializers.SerializerMethodField()
|
||||
|
||||
class Meta:
|
||||
model = Reply
|
||||
fields = ['id', 'topic', 'content', 'author', 'author_info', 'reply_to', 'media', 'created_at', 'media_ids', 'is_pinned']
|
||||
fields = ['id', 'topic', 'content', 'author', 'author_info', 'reply_to', 'media', 'created_at', 'media_ids', 'is_pinned', 'like_count', 'is_liked']
|
||||
read_only_fields = ['author', 'created_at']
|
||||
|
||||
def get_is_liked(self, obj):
|
||||
request = self.context.get('request')
|
||||
if not request:
|
||||
return False
|
||||
user = get_current_wechat_user(request)
|
||||
if user:
|
||||
return obj.likes.filter(id=user.id).exists()
|
||||
return False
|
||||
|
||||
def create(self, validated_data):
|
||||
media_ids = validated_data.pop('media_ids', [])
|
||||
reply = super().create(validated_data)
|
||||
@@ -106,6 +117,8 @@ class TopicSerializer(serializers.ModelSerializer):
|
||||
replies = ReplySerializer(many=True, read_only=True)
|
||||
media = TopicMediaSerializer(many=True, read_only=True)
|
||||
is_verified_owner = serializers.BooleanField(read_only=True)
|
||||
like_count = serializers.IntegerField(source='likes.count', read_only=True)
|
||||
is_liked = serializers.SerializerMethodField()
|
||||
|
||||
product_info = ESP32ConfigSerializer(source='related_product', read_only=True)
|
||||
service_info = ServiceSerializer(source='related_service', read_only=True)
|
||||
@@ -125,10 +138,20 @@ class TopicSerializer(serializers.ModelSerializer):
|
||||
'related_service', 'service_info',
|
||||
'related_course', 'course_info',
|
||||
'view_count', 'is_pinned', 'created_at', 'updated_at',
|
||||
'is_verified_owner', 'replies', 'media', 'media_ids'
|
||||
'is_verified_owner', 'replies', 'media', 'media_ids',
|
||||
'like_count', 'is_liked'
|
||||
]
|
||||
read_only_fields = ['author', 'view_count', 'created_at', 'updated_at', 'is_verified_owner', 'status']
|
||||
|
||||
def get_is_liked(self, obj):
|
||||
request = self.context.get('request')
|
||||
if not request:
|
||||
return False
|
||||
user = get_current_wechat_user(request)
|
||||
if user:
|
||||
return obj.likes.filter(id=user.id).exists()
|
||||
return False
|
||||
|
||||
def create(self, validated_data):
|
||||
media_ids = validated_data.pop('media_ids', [])
|
||||
topic = super().create(validated_data)
|
||||
|
||||
Reference in New Issue
Block a user