Pogrupować relacje w ramach REST Django?

Używamy REST Ramy Django dla naszego API i musimy paginować pola relacji, które zwracają wiele elementów.

Aby zademonstrować za pomocą przykładów podobnych do tych wdokumentacja:

class TrackSerializer(serializers.ModelSerializer):
    class Meta:
        model = Track
        fields = ('order', 'title')

class AlbumSerializer(serializers.ModelSerializer):
    tracks = TrackSerializer(many=True)

    class Meta:
        model = Album
        fields = ('album_name', 'artist', 'tracks')

Przykładowy wydruk seryjny dla albumu:

{
    'album_name': 'The Grey Album',
    'artist': 'Danger Mouse'
    'tracks': [
        {'order': 1, 'title': 'Public Service Annoucement'},
        {'order': 2, 'title': 'What More Can I Say'},
        {'order': 3, 'title': 'Encore'},
        ...
    ],
}

Staje się to problematyczne, gdy w albumie jest kilkaset utworów. Czy w tym przypadku istnieje sposób podziału stron na „ścieżki”?

W idealnym przypadku wiem, że w takich przypadkach „ścieżki” powinny wskazywać na adres URL interfejsu API, który po prostu zwraca ścieżki do konkretnego albumu - który z kolei można łatwo paginować. Wadą tego podejścia jest dodatkowe żądanie (a zatem opóźnienie itp.) Wymagane do uzyskania nawet kilku pierwszych utworów. W naszym przypadku ważne jest, abyśmy mogli pobrać przynajmniej kilka ścieżek za pomocą pojedynczego żądania do interfejsu API albumu, a następnie dynamicznie załadować resztę ścieżek w razie potrzeby.

Czy DRF oferuje do tego jakąś konkretną funkcję lub wzorzec? Czy są jakieś prace?

questionAnswers(4)

yourAnswerToTheQuestion