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
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
|