Как выбрать связанные объекты с помощью одного запроса
Модели:
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)