Нужна помощь в оптимизации seriliazer

У меня есть следующая модель ProductCategory.

class ProductCategory(Model):
    name = CharField(max_length=200)
    parent_category = ForeignKey(
        "ProductCategory",
        related_name='child_categories',
        on_delete=CASCADE,
        blank=True,
        null=True,
    )
    is_base_category = BooleanField(default=True)

У меня есть следующий ProductCategorySerializer.

class ProductCategorySerializer(serializers.ModelSerializer):
    children = serializers.SerializerMethodField(read_only=True)

    @staticmethod
    def setup_eager_loading(queryset):
        # Prefetch for subsets of relationships
        queryset = queryset.prefetch_related(
            'parent_category',
            Prefetch(
                'child_categories',
                queryset=ProductCategory.objects.prefetch_related(
                    'child_categories',
                )
            ),
        ).filter(
            is_base_category=True
        ).order_by(
            'name'
        )

        return queryset

    def get_children(self, category):
        return [{
            'name': c.name,
            'id': c.id,
            'children': self.get_children(c),
            'is_base_category': c.is_base_category,
            'parent_category': category.id,
            'grandparent_category': category.parent_category.id if category.parent_category else None,
        } for c in category.child_categories.order_by('name')]

    class Meta:
        model = ProductCategory
        fields = (
            'id',
            'name',
            'is_base_category',
            'children',
            'parent_category',
        )

Только для верхней родительской категории будет is_base_category=True. Вышеуказанный сериализатор выполняется от 10 до 15 секунд. Могу ли я как-то оптимизировать вышеуказанный сериализатор. Или есть другие предложения?

Вернуться на верх