1

我正在使用 Django REST Frameworks Paginator 对从数据库读取的 JSON 响应进行分页。

我当前的 serializers.py 文件如下所示:

class CountrySerializer(serializers.Serializer):
    country_geoname_id = serializers.CharField(required=True)
    country_code = serializers.CharField(source="iso", max_length=2L, required=True)
    country_name = serializers.CharField(max_length=64L, required=True)

    paginate_by_param = "offset"

    def transform_iso(self, obj, value):
        return "country_code"

class PaginatedCountrySerializer(pagination.PaginationSerializer):
    paginate_by_param = "offset"
    class Meta:
        object_serializer_class = CountrySerializer
        paginate_by_param = "offset"

请求/响应当前如下所示:

GET /v4/api/v1/countries/?limit=1&offset=1
{
    "count": 250, 
    "next": "http://dev.fanmode.com/v4/api/v1/countries/?limit=2&page=2&offset=1", 
    "previous": null, 
    "results": [
        {
            "country_geoname_id": 3041565, 
            "country_code": "AD", 
            "country_name": "Andorra"
        }, 
        ...
    ]
}

有人可以告诉我:

  • 如何修改这些名称?例如,我想将next字段中“page=2”的位置更改为“limit=2”。我'PAGINATE_BY_PARAM': 'limit'在 settings.py 文件中尝试过,但这没有用。
  • 如何一起删除字段。我想从响应中删除“count”和“previous”。

感谢我能得到的任何帮助。谢谢。

4

1 回答 1

1

您可以更改page_fieldinNextPageField类内部pagination.py文件以将名称从 永久更改pagelimit.

对于第二部分,您可以编写自己的自定义PaginationSerializer

from rest_framework.pagination import BasePaginationSerializer, NextPageField
class MyPaginationSerializer(BasePaginationSerializer):

    next = NextPageField(source='*')

现在只返回nextandresults字段。

于 2013-11-12T14:04:31.350 回答