Передача переменной в сравнении с жестко заданной строкой не работает при поиске запросов с использованием ярлыков 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)
Вернуться на верх