Как выбрать связанные объекты с помощью одного запроса

Модели:

class Tag(BaseModel):
    tag_name = models.CharField(max_length=250)
    slug = models.SlugField()

    def save(self, *args, **kwargs):
        self.slug = slugify(self.tag_name)
        super(Tag, self).save(*args, **kwargs)

    def __str__(self):
        return str(self.tag_name)


class Tags(BaseModel):
    filtertype = models.CharField(max_length=250)
    tags = models.ManyToManyField(Tag)

Мое текущее решение:

    def get(self,request,version):
        filtertype = request.query_params.get('filtertype', '')
        filtertypes = filtertype.split(",")


        tagsList = Tags.objects.filter(filtertype__in=filtertypes).values_list('tags', flat=True).distinct()
        queryset = Tag.objects.filter(id__in=tagsList)

        context = {"request": request}
        serialized = TagListSerializers(queryset, many=True, context=context)
        return Response(serialized.data)

Я пытаюсь получить все соответствующие теги на основе тегов/типа фильтра. Мне интересно, как я могу сделать это с помощью только одного запроса.

Вы можете сделать часть запроса с помощью этого кода:

queryset = Tag.objects.filter(tags__filtertype__in=filtertypes)
Вернуться на верх