Paginierte Beziehung im Django REST Framework?

Wir verwenden Django REST Framework für unsere API und müssen Beziehungsfelder paginieren, die mehrere Elemente zurückgeben.

Zur Demonstration mit Beispielen ähnlich denen in derDokumentation:

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')

Beispiel für eine serialisierte Ausgabe für ein Album:

{
    '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'},
        ...
    ],
}

Dies wird problematisch, wenn das Album beispielsweise Hunderte von Titeln enthält. Gibt es in diesem Fall eine Möglichkeit, die "Tracks" zu paginieren?

Ich weiß, dass in solchen Fällen die "Tracks" möglicherweise auf eine API-URL verweisen sollten, die nur die Tracks für ein bestimmtes Album zurückgibt - was wiederum leicht paginiert werden kann. Die Kehrseite dieses Ansatzes ist die zusätzliche Anforderung (und damit Verzögerung usw.), die erforderlich ist, um auch die ersten Spuren zu erhalten. In unserem Fall ist es wichtig, dass wir in der Lage sind, mindestens einige der Tracks mit der Einzelanforderung an die Album-API zu senden und dann den Rest der Tracks nach Bedarf dynamisch zu laden.

Bietet das DRF hierfür ein bestimmtes Merkmal oder Muster? Oder gibt es irgendwelche Workarounds?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage