Some checks failed
Build and Deploy Backend / build-and-deploy (push) Failing after 1m36s
51 lines
1.6 KiB
Python
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)
|