使用DjangoRestFramework序列化两个查询集

时间:2018-11-29 13:37:19

标签: python django django-rest-framework

我正在尝试序列化多个查询集,但是我注意到只有其中一个序列化了。这是我目前正在尝试的方法。

class GetDetails(APIView):   
    def get(self, request):

        todays_date = time.strftime('%Y-%m-%d')
       #Get results according to specified criteria
        queryset = People.objects.filter(date = todays_date, assigned_to = 1)
       #Check if any querysets are available
        if queryset:
       #Iterate through each queryset, serialize and return a response
            for person in queryset:
                serializer=ASerializer(person)

            return Response(serializer.data)
        else:
            return Response({'TODO':'TODO'})

2 个答案:

答案 0 :(得分:2)

首先,执行查询集的方法不正确,您正在使用人员变量遍历查询集,而根本没有使用人员变量。

对于这个问题,请使用序列化器的many=True属性。它将为您创建序列化项目的列表。

像这样:

class GetDetails(APIView):   
    def get(self, request):
        todays_date = time.strftime('%Y-%m-%d')
        queryset = People.objects.filter(date = todays_date, assigned_to = 1)
        return Response(ASerializer(many=True).to_representation(queryset))

答案 1 :(得分:1)

也许您的代码应该是这样的:

    def get(self, request):
        todays_date = time.strftime('%Y-%m-%d')
        queryset = People.objects.filter(date = todays_date, assigned_to = 1)
        if queryset.exists():  # Lazy check if entry Exists.
            serializer=ASerializer(queryset, many=True)
            return Response(serializer.data)
        else:
            return Response({'TODO':'TODO'})