при условии, что у меня есть следующие модели и сериализаторы:
Модели:
class Album(models.Model):
album_name = models.CharField(max_length=100)
artist = models.CharField(max_length=100)
class Track(models.Model):
album = models.ForeignKey(Album, related_name='tracks',
on_delete=models.CASCADE)
title = models.CharField(max_length=100)
duration = models.IntegerField()
и следующие сериализаторы:
class TrackSerializer(serializers.ModelSerializer):
class Meta:
model = Track
fields = ['order', 'title', 'duration']
class AlbumSerializer(serializers.ModelSerializer):
tracks = TrackSerializer(many=True, read_only=True)
class Meta:
model = Album
fields = ['album_name', 'artist', 'tracks']
Я хотел бы написать представлениечто при получении значения длительности будет возвращен список альбомов, содержащих треки, длительность которых равна заданному значению длительности.
Предполагая, что у меня есть альбом:
a - of John,
track1, duration : 60
track2, duration : 120
track3, duration : 60
b- of Mike,
track1, duration : 60
track2, duration : 120
Если я 'Достигну своей конечной точки со значением продолжительности: 60, я хочу вернуть следующее:
[album : a,
track1, duration : 60
track2, duration : 120
track3, duration : 60
album : b,
track1, duration : 1:00
]
Основная проблема, с которой я столкнулся, заключается в том, что я не могу управлять набором запросов вложенного сериализатора, что бы я хотелКак это можно сделать, это передать значение длительности как-то вложенному TrackSerializer и использовать ListSerializer или аналогичный для управления фильтрацией.