API に Django REST Framework を使用しており、複数のアイテムを返す関係フィールドをページ分割する必要があります。
ドキュメントにあるものと同様の例を使用してデモンストレーションするには:
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')
アルバムのシリアル化された出力の例:
{
'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'},
...
],
}
これは、アルバムに何百ものトラックがある場合に問題になります。この場合、「トラック」を改ページする方法はありますか?
理想的には、このような場合、「トラック」は、特定のアルバムのトラックを返すだけの API URL を指す必要があることを知っています。これにより、簡単にページ分割できます。そのアプローチのマイナス面は、最初の数トラックを取得するために必要な追加のリクエスト (したがって遅延など) です。私たちの場合、Album API への 1 回のリクエストで少なくともいくつかのトラックを取得し、必要に応じて残りのトラックを動的にロードできることが重要です。
DRF は、これに対して特定の機能やパターンを提供していますか? または、回避策はありますか?