Как сделать 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). Я хочу избавиться от этого.