Python 更改或删除分页序列化程序中的默认返回值

Python 更改或删除分页序列化程序中的默认返回值,python,django,django-rest-framework,django-pagination,Python,Django,Django Rest Framework,Django Pagination,我使用Django REST Framework分页器对从数据库读取的JSON响应进行分页 我当前的serializers.py文件如下所示: class CountrySerializer(serializers.Serializer): country_geoname_id = serializers.CharField(required=True) country_code = serializers.CharField(source="iso", max_length=2

我使用Django REST Framework分页器对从数据库读取的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"
        }, 
        ...
    ]
}
请求/响应当前如下所示:

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”。我在settings.py文件中尝试了“PAGINATE”BY_PARAM:“limit”,但没有成功
  • 如何一起删除字段。我想从响应中删除“count”和“previous”
谢谢你给我的任何帮助。
谢谢。

您可以更改文件中
NextPageField
类中的
page\u字段
,将名称从
页面
永久更改为
限制

对于第二部分,您可以编写自己的:


现在只返回
next
results
字段。

您可以在
NextPageField
类中更改
page\u字段
,将名称从
page
永久更改为
limit

对于第二部分,您可以编写自己的:


现在只返回
下一个
结果
字段。

更改
'PAGINATE_BY_PARAM':'limit'
将不会返回API返回的
page=n
,它只允许您使用其他替代方法。@hcwhsa感谢您的回复。我想可能是这样的。您知道我是如何在响应中更改它的吗?我已经发布了一个答案。更改
'PAGINATE_BY_PARAM':“limit”
不会影响API返回的
page=n
,它只允许您使用其他替代方法。@hcwhsa感谢您的回复。我想可能是这样的。你知道我是如何在回复中更改它的吗?我已经发布了一个答案。非常感谢。如何将MyPaginationSerializer链接到我正在使用的序列化程序?它如何知道如何使用这个序列化程序?我尝试将
pagination\u serializer\u class=MyPaginationSerializer
添加到PaginatedCountrySerializer元类,但没有成功。再次感谢。@MarkWinterbottom看看这些示例:django 1.8中不推荐使用分页序列化程序。非常感谢。如何将MyPaginationSerializer链接到我正在使用的序列化程序?它如何知道如何使用这个序列化程序?我尝试将
pagination\u serializer\u class=MyPaginationSerializer
添加到PaginatedCountrySerializer元类,但没有成功。再次感谢。@MarkWinterbottom看看这些示例:django 1.8中不推荐使用分页序列化程序