我从这段代码返回 JSON 响应,我得到 [ ]

I am returning a JSON response from this code and I get [ ]

我正在尝试从另一个模型中获取与驱动程序相关的所有模型实例,如图所示循环驱动程序查询集,然后 return 全部采用 json 格式。但是我得到了 [ ] 个结果。

  elif request.method == "POST":
    pull_tegas_serializer = TegaSerializer(data=request.data)
    if pull_tegas_serializer.is_valid():
        check_for_tegas_request = request.data
        rafiki_number = check_for_tegas_request['rafiki_number']

        def get_rafiki(rafiki_number):
            rafiki_got = RafikiRegistrationCodeModel.objects.filter(phone_number=rafiki_number)
            return rafiki_got.first(), rafiki_got.exists()

        def fetch_rafiki_profile():
            fetched_profile = RafikiProfileModel.objects.filter(rafiki_number=get_rafiki(rafiki_number)[0])
            return fetched_profile.first(), fetched_profile.exists()

        def get_rafiki_driver_session_record():
            rafiki_driver_session_record = RafikiDriverSession.objects.filter(rafiki_number=fetch_rafiki_profile()[0])
            return rafiki_driver_session_record.first(), rafiki_driver_session_record.exists

        rafiki_driver_sessions = RafikiDriverSession.objects.filter(rafiki_number=fetch_rafiki_profile()[0])

        for rafikidriversession in rafiki_driver_sessions:
            fetched_tega = Tega.objects.filter(driver_profile=rafikidriversession.drivers_profile)
            print (rafikidriversession.rafiki_number, rafikidriversession.drivers_profile)
            print (fetched_tega)
            tega_pulled_serializer = TegaSerializer(fetched_tega, many=True)
        return Response(tega_pulled_serializer.data)
    return Response(pull_tegas_serializer.errors, status=status.HTTP_400_BAD_REQUEST)

所以在修改我的处决之后。我意识到它的 return 仅来自 for 循环执行的最后一个实例的数据,而不是来自 for 循环实例的所有数据。有没有一种方法可以在每次循环完成时保存,然后将这些结果解析为 json 响应?

您每次都在循环中替换 tega_pulled_serializer。它应该是您每次通过循环附加到的列表。

        tega_pulled_serializer = []
        for rafikidriversession in rafiki_driver_sessions:
            fetched_tega = Tega.objects.filter(driver_profile=rafikidriversession.drivers_profile)
            print (rafikidriversession.rafiki_number, rafikidriversession.drivers_profile)
            print (fetched_tega)
            tega_pulled_serializer.append(TegaSerializer(fetched_tega, many=True).data)
        return Response(tega_pulled_serializer)