我正在使用Django Rest Framework 3,並遇到一些問題。我已經根據this example獲得了自定義分頁工作,並且我已經獲得了一個非orm模型,其工作方式如下:this example。但是,我無法在非orm模型上獲得自定義分頁(或針對此問題的任何分頁)。自定義分頁在settings.py中設置爲默認值,並且它適用於所有帶模型的視圖集。如何使用非orm模型自定義分頁
帶模型端點的JSON輸出包含元信息並嵌套在「對象:」內的對象。沒有模型的端點的JSON輸出只是給出了一個對象列表。我的代碼發佈在下面。任何想法如何讓這個工作?
自定義分頁:
from rest_framework.pagination import LimitOffsetPagination
from rest_framework.response import Response
class CustomPagination(LimitOffsetPagination):
def get_paginated_response(self, data):
return Response({
'meta': {
'limit': self.get_limit(self.request),
'next': self.get_next_link(),
'offset': self.get_offset(self.request),
'previous': self.get_previous_link(),
'total_count': self.count
},
'objects': data
})
對象:
class EMSEvent(object):
def __init__(self, id, name, start, end):
self.id = id
self.name = name
self.start = start
self.end = end
串行:
class EMSEventSerializer(serializers.Serializer):
id = serializers.IntegerField()
name = serializers.CharField()
start = serializers.CharField()
end = serializers.CharField()
class Meta:
fields = '__all__'
視圖集:
class EMSEventViewSet(viewsets.ViewSet):
serializer_class = EMSEventSerializer(many=True)
http_method_names = ['get']
def list(self, request):
results = []
"""
Here is code that opens up a SQL connection, executes a
query, then transfers the data into results
"""
# Always sort results by start time
results = sorted(results, key=lambda k: k.start)
serializer = EMSEventSerializer(instance=results, many=True)
return Response(serializer.data)
JSON輸出的API端點與型號:
{
meta: {
limit: 20,
next: "/api/v1/endpoint/?offset=20&limit=20&format=json",
offset: 0,
previous: null,
total_count: 24
},
objects: [
{
description: "A Room",
end: "2017-03-03T15:30:00",
id: 1234,
name: "Grad Day",
resource_uri: "/api/v1/endpoint/1234/",
room: "CMU Room",
start: "2017-03-03T09:00:00"
}
]
}
JSON輸出的API端點不車型
[
{
description: "A Room",
end: "2017-03-03T15:30:00",
id: 1234,
name: "Graduate Day",
resource_uri: "/api/v1/endpoint/1234/",
room: "CMU Room",
start: "2017-03-03T09:00:00"
}
]