Передача переменной в сравнении с жестко заданной строкой не работает при поиске запросов с использованием ярлыков Django
Я нахожусь в процессе изучения использования Django. Моя цель - получить объект (один герой и один злодей) из базы данных, используя имена (не id), переданные в URL в качестве параметров поиска.
Я успешно получаю значения из параметров запроса, однако, когда я пытаюсь передать переменную "hero" в ярлык Django, (get_object_or_404(Super,name=hero)), я получаю сообщение 'not found'. Все работает нормально, если я вручную ввожу строку, которую ищу(get_object_or_404(Super,name="Bat Man")). Есть идеи, почему так происходит и как я могу сделать поиск по имени динамическим?
@api_view(['GET', 'POST'])
def supers_list(request):
type = request.query_params.get('type')
hero = request.query_params.get('hero')
villain = request.query_params.get('villain')
if request.method == 'GET':
supers = Super.objects.all()
if type:
supers = supers.filter(super_type_id__type = type)
serializer = SuperSerializer(supers, many=True)
return Response(serializer.data)
elif hero and villain:
# print(hero) result is "Bat Man"
hero_found = get_object_or_404(Super,name=hero)
# hero_found = get_object_or_404(Super,name="Bat Man")
print('=====', hero_found)
return Response('hello')
else:
heros = supers.filter(super_type_id__type = 'hero')
villains = supers.filter(super_type_id__type = 'villain')
heros = SuperSerializer(heros, many=True)
villains = SuperSerializer(villains, many=True)
result = {'heros':heros.data, 'villains':villains.data}
return Response(result)