Używamy Django REST Framework dla naszego interfejsu API i mamy potrzebę stronicowania pól relacji, które zwracają wiele elementów.Pośredni związek w strukturze REST Django?
Aby wykazać na podstawie przykładów podobnych do tych w documentation:
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ład odcinkach wyjście na płytę:
{
'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 problemem, gdy istnieje znaczy setki ścieżek na album. Czy w tym przypadku istnieje sposób na paginację "ścieżek"?
Wiem, że w takich przypadkach "utwory" powinny wskazywać na URL interfejsu API, który po prostu zwraca ścieżki do określonego albumu - który z kolei może być łatwo paginowany. Wadą tego podejścia jest dodatkowe żądanie (a więc opóźnienie itd.) Wymagane do uzyskania nawet pierwszych kilku utworów. W naszym przypadku ważne jest, abyśmy mogli uzyskać co najmniej kilka ścieżek za pomocą pojedynczego żądania do interfejsu Album API, a następnie dynamicznie ładować resztę ścieżek w razie potrzeby.
Czy DRF oferuje jakąś określoną funkcję lub wzór? Czy są jakieś prace dookoła?
Uwaga na przyszłość. To było kontynuowane w [tym wątku] (https://groups.google.com/d/msg/django-rest-framework/UtVRH8mHwmU/C6C5OhkEQ80J) na liście dyskusyjnej Dmygo REST. –