Как фильтровать объекты по нескольким значениям в Python Django?
Я пытаюсь фильтровать объекты в django по набору запросов, а не по одному значению. Пожалуйста, посмотрите мой код ниже
@api_view(['GET'])
def getOffersReceived(request, name):
owner = Profile.objects.get(name=name)
dogs = Dog.objects.filter(owner=owner)
print(dogs)
sittings = Sitting.objects.filter(dog=dogs)
return Response()
Строка print(dogs) показывает набор запросов из 4 значений. Следующим шагом я пытаюсь получить все сидения, у которых значение dog совпадает с любым из элементов в наборе запроса.
Я получаю следующую ошибку:
ValueError: Значение QuerySet для точного поиска должно быть ограничено одним результатом с помощью нарезки.
любая помощь будет очень признательна.
Спасибо
Вы можете фильтровать непосредственно с помощью:
@api_view(['GET'])
def getOffersReceived(request, name):
sittings = Sitting.objects.filter(dog__owner__name=name)
# …
return Response()
Для фильтрации набора запросов следует использовать in
:
https://docs.djangoproject.com/en/3.2/ref/models/querysets/#in
sittings = Sitting.objects.filter(dog__in=dogs)