Отношения по страницам в Django REST Framework?

Мы используем Django REST Framework для нашего API, и нам нужно разбить поля отношений, которые возвращают несколько элементов.

Чтобы продемонстрировать, используя примеры, аналогичные тем, что вдокументация:

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

Это становится проблематичным, когда в альбоме, скажем, сотни треков. Есть ли способ разбить «дорожки» в этом случае?

В идеале я знаю, что в подобных случаях «дорожки» должны указывать на URL-адрес API, который просто возвращает дорожки для определенного альбома - который, в свою очередь, можно легко разбить на страницы. Недостатком этого подхода является дополнительный запрос (и, следовательно, задержка и т. Д.), Требуемый для получения даже первых нескольких треков. В нашем случае важно, чтобы мы смогли получить хотя бы несколько треков за один запрос к API альбома, а затем динамически загрузить остальные треки по мере необходимости.

Предлагает ли DRF какую-либо особую функцию или шаблон для этого? Или есть какие-то обходные пути?

Ответы на вопрос(4)

Ваш ответ на вопрос