如何使序列化器可以在ApiView中返回列表?

时间:2019-07-24 19:58:18

标签: django rest api django-rest-framework

我试图制作API,该API将向我返回经​​过身份验证的用户的“列表” ID列表,但我没有任何序列化器就这样做了。

我的观点:

class AuthUserFavoriteListingsView(APIView):
    """List of favorite user listings"""
    permission_classes = (IsAuthenticated, )

    def get(self, request):
        listings = UserListingFavorite.objects.filter(user=request.user).values_list('listing_id', flat=True)
        return Response({"listings": listings})

这是我的结果:

{
    "listings": [
        9,
        11
    ]
}

有什么办法可以通过串行器获得相同的结果吗?

1 个答案:

答案 0 :(得分:0)

您可以通过以下方式使用serializers做同样的事情:

views.py

class AuthUserFavoriteListingsView(APIView):
    """List of favorite user listings"""
    permission_classes = (IsAuthenticated)

    def get(self, request):
        listings = UserListingFavorite.objects.filter(user=request.user)
        serializer = UserListingFavoriteSerializer(listings, many=True)

        return Response({"listings": serializer.data})

serializers.py

class UserListingFavoriteSerializer(serializers.ModelSerializer):
    class Meta:
        model = UserListingFavorite
        fields = '__all__'