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.
 
 

50 lines
1.4 KiB

from rest_framework import serializers
from apps.hadis.models import *
class HadisCategorySerializer(serializers.ModelSerializer):
children = serializers.SerializerMethodField('get_children')
name = serializers.SerializerMethodField()
hadis_count = serializers.SerializerMethodField()
source_type = serializers.CharField(read_only=True)
def get_children(self, obj):
return [self.to_dict(cat) for cat in obj.get_children()]
def to_dict(self, c):
children = c.get_children()
return {
'id': c.id,
'name': c.name,
'hadis_count': c.hadis_count,
'source_type': c.source_type,
'category_type': c.category_type,
'children': [] if not children else [self.to_dict(i) for i in children],
}
class Meta:
model = HadisCategory
fields = ['id', 'name', 'hadis_count', 'source_type','children']
class HadisTagSerializer(serializers.ModelSerializer):
class Meta:
model = HadisTag
fields = ('id', 'title')
class HadisSerializer(serializers.ModelSerializer):
translation = serializers.CharField(source='translation')
text = serializers.CharField(source='text')
tags = serializers.SerializerMethodField()
def get_tags(self, obj):
return HadisTagSerializer(obj.get_tags, many=True).data
class Meta:
model = Hadis
fields = ('number', 'title', 'text', 'translation', 'tags')