rtc_backend/apps/stories/serializers.py
repair-agent 88b8f023f4
Some checks failed
Build and Deploy Backend / build-and-deploy (push) Failing after 1m36s
Fix app api
2026-02-09 15:35:33 +08:00

51 lines
1.6 KiB
Python

"""
故事模块序列化器
"""
from rest_framework import serializers
from .models import StoryShelf, Story
class StoryShelfSerializer(serializers.ModelSerializer):
"""书架序列化器"""
story_count = serializers.IntegerField(read_only=True, default=0)
class Meta:
model = StoryShelf
fields = ['id', 'name', 'is_locked', 'unlock_cost', 'story_count', 'created_at']
read_only_fields = ['id', 'created_at']
class CreateShelfSerializer(serializers.Serializer):
"""创建书架序列化器"""
name = serializers.CharField(max_length=100)
class StoryListSerializer(serializers.ModelSerializer):
"""故事列表序列化器"""
class Meta:
model = Story
fields = ['id', 'title', 'cover_url', 'content', 'has_video',
'video_url', 'created_at']
class StoryDetailSerializer(serializers.ModelSerializer):
"""故事详情序列化器"""
class Meta:
model = Story
fields = ['id', 'title', 'content', 'cover_url', 'has_video',
'video_url', 'generation_mode', 'prompt', 'shelf',
'created_at', 'updated_at']
class GenerateStorySerializer(serializers.Serializer):
"""生成故事序列化器"""
mode = serializers.ChoiceField(
choices=['random', 'keyword', 'theme'],
default='random'
)
prompt = serializers.CharField(required=False, allow_blank=True, default='')
theme = serializers.CharField(required=False, allow_blank=True, default='')
shelf_id = serializers.IntegerField(required=False, allow_null=True)