rtc_backend/apps/stories/serializers.py
repair-agent 7a6d7814e0
Some checks failed
Build and Deploy Backend / build-and-deploy (push) Failing after 57s
fix store bug
2026-02-12 14:05:51 +08:00

66 lines
2.1 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', 'capacity', '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', 'audio_url',
'has_video', 'video_url', 'created_at']
class StoryDetailSerializer(serializers.ModelSerializer):
"""故事详情序列化器"""
class Meta:
model = Story
fields = ['id', 'title', 'content', 'cover_url', 'audio_url',
'has_video', 'video_url', 'generation_mode', 'prompt',
'shelf', 'created_at', 'updated_at']
class CreateStorySerializer(serializers.Serializer):
"""保存故事序列化器"""
title = serializers.CharField(max_length=200)
content = serializers.CharField()
shelf_id = serializers.IntegerField()
cover_url = serializers.URLField(required=False, allow_blank=True, default='')
generation_mode = serializers.ChoiceField(
choices=['ai', 'manual'], default='ai'
)
prompt = serializers.CharField(required=False, allow_blank=True, default='')
class GenerateStorySerializer(serializers.Serializer):
"""生成故事序列化器"""
characters = serializers.ListField(
child=serializers.CharField(), default=[]
)
scenes = serializers.ListField(
child=serializers.CharField(), default=[]
)
props = serializers.ListField(
child=serializers.CharField(), default=[]
)
shelf_id = serializers.IntegerField(required=False, allow_null=True)