Вместо того, чтобы использовать фильтр __contains
, используйте фильтр __in
и передайте итерацию. Это эквивалент ключевого слова SQL IN
. Подробнее о поиске в различных полях см. Django здесь .
class TagListAPIView(generics.ListAPIView):
serializer_class = serializers.TagSerializer
def get_queryset(self):
search_words = self.request.query_params['search_with'].split()
queryset = Tag.objects.filter(name__in=search_words)
return queryset
Следует иметь в виду, что наборы запросов в Django ведут себя совсем не так, как стандартные списки в Python. Для объединения наборов запросов есть операторы &
и |
, о которых стоит прочитать здесь . Тем не менее, когда вы пытаетесь изобрести неуклюжий обходной путь для манипулирования набором запросов, обычно это хороший признак того, что пришло время покопаться в документации для лучшего решения. В любом случае, это был мой опыт.