У меня есть модель, которая выглядит примерно так:
class Song(models.Model):
composer = models.ForeignKey('Person')
performer = models.ForeignKey('Person')
backup = models.ForeignKey('Person')
class Person(models.Model):
name = models.CharField(max_length=1000)
...
Моя проблема начинается, когда я пытаюсь сериализовать модель Song, например:
class SongSerializer(serializers.ModelSerializer):
composer = PersonSerializer()
performer = PersonSerializer()
backup = PersonSerializer()
class Meta:
fields = ('id', 'composer', 'performer', 'backup')
Это приводит к запуску сериализатора 3 запросы, по одному на внешний ключ. Я хочу оптимизировать это в 1 запрос, но я не хочу изменять структуру модели (объединить composer, исполнителя и резервное копирование в ManyToMany с пользовательским порядком, определенным мной). Есть ли способ вручную объединить набор запросов в сериализаторе?