Django的。分配Viewset的@link或@action方法

时间:2016-02-04 21:03:21

标签: python django pagination

我正在使用Django Restframework和DRF Extensions开发API Restful。

我有下一个用户视图集

class UserViewSet(NestedViewSetMixin, viewsets.ModelViewSet):
    queryset = User.objects.all()
    serializer_class = UserSerializer
    filter_class = conversation.UserFilter

    @link(is_for_list=True)
    def favorites(self,request,pk=None):
        """Return the profile of the user"""
        fav = UserFavorite.objects.filter(user=request.user, is_favorite=True)
        favorites = UserFavoriteReadOnlySerializer(fav,many=True)
        return Response(favorites.data)

和Settings.py:

REST_FRAMEWORK = {
...
'DEFAULT_PAGINATION_CLASS': (
    'rest_framework.pagination.PageNumberPagination'
),
...

我希望获得此方法对应用分页的响应,但是不返回我想要的内容'导致返回与搜索方法相关联的所有对象而不进行分页。

我可以转换这个方法的分页吗?

1 个答案:

答案 0 :(得分:0)

如果查看DRF docs for PageNumberPagination,您会发现需要包含'PAGE_SIZE'键值对来设置返回的页数。

例如,您的分页设置应如下所示:

REST_FRAMEWORK = {
    ...
    'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
    'PAGE_SIZE': 100
    ...
}