Ich hoffe, Sie verwenden Viewset, aber es wird ohne es funktionieren. wenn Sie mit Viewsets schlecht sind, können Sie sie hier lesen: http://www.django-rest-framework.org/api-guide/viewsets/
views.py
from django.core.paginator import Paginator
...
class AlbumViewSet(viewsets.ModelViewSet):
queryset = Album.objects.all()
serializer_class = AlbumSerializer
@detail_route()
def tracks(self, request, pk, page):
# if you want to use url: albums/<album_id>/tracks/page/
track_set = Tracks.objects.get(album_id=int(pk))
# elif you want to use url: albums/<album_name>/tracks/page/
track_set = Tracks.objects.get(album_album_name=pk)
paginator = Paginator(track_set, page_size) # ! change page_size to yours
serializer = TrackSerializer(paginator.page(page), many=True, context={'request': request})
return Response(serializer.data)
urls.py. Wenn Sie keine Router verwenden, lesen Sie Docks und verwenden Sie sie mit einem ViewSet anstelle Ihres ClassView, aber das funktioniert auch ohne sie. (Router: http://www.django-rest-framework.org/api-guide/routers/)
# little router example
from rest_framework.routers import DefaultRouter
router = DefaultRouter()
router.register(r'albums', views.PostViewSet)
# end little router example
user_posts = views.AlbumViewSet.as_view({
'get': 'tracks'
})
urlpatterns = [
...
url(r'^albums/(?P<pk>\w+)/tracks/(?P<page>[0-9]+)/', user_posts),
...
]
Jetzt können Sie URL wie folgt holen: Alben/my_name_is_jeff/Tracks/1 oder Alben/5/Tracks/1. Alles Code ist erforderlich, außer "kleines Fräserbeispiel", und yep es `albern sein, es mit einfachem ClassBasedView zu verwenden
Haben Sie django.core.paginator ausprobiert? – MishaVacic
https://stackoverflow.com/questions/15617595/paginate-relationship-in-django-rest-framework Frage mit vielen Antworten. Hoffe das wird dir helfen. – Devansh
pagination.PaginationSerializer Dies ist für DRF