Как сделать prefetch_related в подкатегории модели Django MPTT?

Я использую Django MPTT модель для категории и подкатегории. Я не могу отфильтровать подкатегории по их активному состоянию. Мне нужны данные подкатегорий с is_active=True.

models.py

class TrnCategory(MPTTModel):
    name = models.CharField(max_length=100)
    parent = TreeForeignKey('self', on_delete=models.CASCADE, related_name='subcategories',
        null=True, blank=True, db_index=True)
    is_subject = models.BooleanField(default=False)
    institute = models.ForeignKey(Institute, on_delete=models.CASCADE,
        related_name='catrgories')
    sequence = models.IntegerField(default=1)
    is_active = models.BooleanField(default=True)

Мой запрос: views.py

class CategoryDetailView(generics.RetrieveUpdateDestroyAPIView):
    serializer_class = CategorySerializer
    permission_classes = [IsAuthenticated, InstituteAdminRequired]

    def get_serializer_class(self):
        if self.request.method != 'GET':
            return CategorySerializer
        return CategoryDetailSerializer

    def get_queryset(self):
        return TrnCategory.objects.filter(institute=self.request.user.institute,
            is_active=True).prefetch_related(Prefetch('subcategories',
                queryset=TrnCategory.objects.filter(is_active=True).order_by('sequence')
                )).order_by('sequence')

    def perform_destroy(self, instance):
        instance.is_active = False
        for material in instance.materials.filter(is_active=True):
            material.is_active = False
            material.save(update_fields=['is_active'])
        instance.save()

Мой вывод в postman

В приведенном выше коде вывода видно, что некоторые данные подкатегорий неактивны (is_active=False). Я хочу избавиться от этого.

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