Python 更改或删除分页序列化程序中的默认返回值
我使用Django REST Framework分页器对从数据库读取的JSON响应进行分页 我当前的serializers.py文件如下所示: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
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"
},
...
]
}
有人能帮我告诉我:
- 如何修改这些文件的名称?例如,我想将
字段中显示“page=2”的位置更改为“limit=2”。我在settings.py文件中尝试了“PAGINATE”BY_PARAM:“limit”,但没有成功next
- 如何一起删除字段。我想从响应中删除“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中不推荐使用分页序列化程序