cma_search/server/apps/vod/serializers.py

82 lines
2.8 KiB
Python

from rest_framework import serializers
from .models import Video, ViewRecord, ViewItem, View1, View2
from apps.system.serializers import UserSimpleSerializer
class VideoSerializer(serializers.ModelSerializer):
category_name = serializers.StringRelatedField(source='category', read_only=True)
class Meta:
model = Video
fields = '__all__'
def create(self, validated_data):
video = super().create(validated_data)
cate = video.category
video.category_big = cate
if cate.pid:
video.category_big = cate.pid
video.save()
View1.objects.get_or_create(video=video, defaults={'video': video})
return video
class VideoUpdateSerializer(serializers.ModelSerializer):
class Meta:
model = Video
fields = ['name', 'category', 'description', 'sort_str']
def update(self, instance, validated_data):
video = super().update(instance, validated_data)
cate = video.category
video.category_big = cate
if cate.pid:
video.category_big = cate.pid
video.save()
return video
class VideoListDetailSerializer(serializers.ModelSerializer):
views_n = serializers.IntegerField(source='view1_video.views', read_only=True, label="总观看次数")
viewsp_n = serializers.IntegerField(source='view1_video.viewsp', read_only=True, label="总观看秒数")
class Meta:
model = Video
exclude = ['mediaurl']
class VideoSimpleSerializer(serializers.ModelSerializer):
class Meta:
model = Video
fields = ['id', 'name', 'duration']
class VRecordSerializer(serializers.ModelSerializer):
user_ = UserSimpleSerializer(source='user', read_only=True)
video_ = VideoSimpleSerializer(source='video', read_only=True)
class Meta:
model = ViewRecord
fields = '__all__'
@staticmethod
def setup_eager_loading(queryset):
queryset = queryset.select_related('user', 'video')
return queryset
class VRecordUpdateSerializer(serializers.ModelSerializer):
class Meta:
model = ViewRecord
fields=['num', 'current']
class ViewItemSerializer(serializers.ModelSerializer):
create_by_ = UserSimpleSerializer(source='create_by', read_only=True)
video_ = VideoSimpleSerializer(source='video', read_only=True)
class Meta:
model = ViewItem
fields = '__all__'
class ViewItemUpdateSerializer(serializers.Serializer):
current = serializers.IntegerField(min_value=1)
seconds = serializers.IntegerField(min_value=0)
class View2Serializer(serializers.Serializer):
create_by_ = UserSimpleSerializer(source='create_by', read_only=True)
video_ = VideoSimpleSerializer(source='video', read_only=True)
class Meta:
model = View2
fields = '__all__'