Всем привет!
Столкнулся с тем, что при сериализации простого объекта не выводятся связанные объекты (а точнее поля связанного объекта,кроме ID), как указано в туториале
Serializer relations
Собственно, весь код оттуда
models.py
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)
order = models.IntegerField()
title = models.CharField(max_length=100)
duration = models.IntegerField()
class Meta:
unique_together = ('album', 'order')
ordering = ['order']
def __str__(self):
return '%d: %s' % (self.order, self.title)
serializers.py
class AlbumSerializer(serializers.ModelSerializer):
tracks = serializers.StringRelatedField(many=True)
class Meta:
model = Album
fields = ('album_name', 'artist', 'tracks')
views.py
@api_view(['GET',])
@permission_classes((AllowAny,))
def album_list(request):
if request.method == 'GET':
albums = Album.objects.all().prefetch_related('tracks')
album_serializer = AlbumSerializer(albums, many=True)
return Response(album_serializer.data)
На выходе JSON получаю просто Track с ID:
{"data":[{"type":"album_list","id":"1","attributes":{"album_name":"Ride the Lightning","artist":"Metallica"},"relationships":{"tracks":{"data":[{"type":"Track","id":"1"},{"type":"Track","id":"2"},{"type":"Track","id":"3"}],"meta":{"count":3}}}},{"type":"album_list","id":"2","attributes":{"album_name":"Metallica","artist":"Vetallica"},"relationships":{"tracks":{"data":[],"meta":{"count":0}}}}]}
Ожидание-как в примере, получить что то типа
'tracks': [
'1: Sunflower',
'2: Whitetail',
'3: Dinosaur Act',
...
Перекопал весь интернет, опробовал в нескольких тестовых проектах - опустился вот до этого простого примера-не работает. Различные методы связей тоже перепробовал. Куда можно копать?