You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

59 lines
1.8 KiB

from rest_framework import serializers
from ..serializers import HadisListSerializer
from ..models import BookReference , BookAuthor , BookReferenceImage
class BookAuthorSerializer(serializers.ModelSerializer):
class Meta:
model = BookAuthor
fields = '__all__'
class BookReferenceImageSerializer(serializers.ModelSerializer):
class Meta:
model = BookReferenceImage
fields = '__all__'
class BookReferenceSerializer(serializers.ModelSerializer):
image = BookReferenceImageSerializer(
many= True ,
read_only = True ,
source = 'bookreference_set'
)
volume_count = serializers.SerializerMethodField()
class Meta:
model = BookReference
fields = ['id','title','description','rate','image','volume_count']
def get_volume_count(self,obj):
request = self.context.get('request')
return BookReference.objects.filter(title=obj.title).count()
class BookDetailSerializer(serializers.ModelSerializer):
author = BookAuthorSerializer(
read_only = True ,
source = 'bookauthor_set'
)
image = BookReferenceImageSerializer(
many= True ,
read_only = True ,
source = 'bookreference_set'
)
volume_count = serializers.SerializerMethodField()
hadis = HadisListSerializer(
many=True,
read_only=True,
source='hadisreference_set'
)
class Meta:
model = BookReference
fields = '__all__'
def get_volume_count(self,obj):
request = self.context.get('request')
return BookReference.objects.filter(title=obj.title).count()
# def create(self , validated_data):
# author = validated_data.pop('author')
# book = BookReference.objects.create(**validated_data)
# for author in author