from rest_framework import serializers from journals.models import Thread, Journal class JournalSerializer(serializers.ModelSerializer): class Meta: model = Journal exclude = ('content_type', 'object_id',) class ThreadDetailSerializer(serializers.ModelSerializer): journals = serializers.SerializerMethodField() children = serializers.SerializerMethodField() class Meta: model = Thread fields = ('journals', 'id', 'text', 'children', 'key',) @staticmethod def get_journals(self): return [JournalSerializer(i).data for i in self.journal_set.all()] @staticmethod def get_children(self): return [ThreadDetailSerializer(i).data for i in self.thread_set.all()] class ThreadAdminSerializer(serializers.ModelSerializer): count_children = serializers.SerializerMethodField() count_journals = serializers.SerializerMethodField() class Meta: model = Thread exclude = ('is_staff', ) @staticmethod def get_count_children(self): return self.child_thread_count() @staticmethod def get_count_journals(self): return self.journals_count() class ThreadUserSerializer(serializers.ModelSerializer): class Meta: model = Thread fields = ('id', 'text')