【发布时间】:2021-10-28 16:50:40
【问题描述】:
与this question 相关,我正在尝试通过 DRF 在一个查询中从多个模型返回数据。
class Artist(models.Model):
artist_name = models.CharField(max_length=100)
class Genre(models.Model):
genre_name = models.CharField(max_length=100)
class Album(models.Model):
album_name = models.CharField(max_length=100)
artist = models.ForeignKey(Artist, on_delete=models.CASCADE)
genre = models.ForeignKey(Genre, on_delete=nodels.CASCADE)
我想返回所有艺术家的专辑和流派的所有选项的 JSON 列表。
类似:
{
"genres": ["techno", "rap", "rock", ...],
"albums": ["nevermind", "collection", "fragile", ...]
}
我创建了一个自定义序列化程序:
class InfoSerializer(serializers.Serializer):
albums = serializers.CharField()
genres = serializers.CharField()
class Meta:
fields = ["albums", "genres"]
和一个视图集:
class OptionsViewSet(ViewSet):
serializer_class = InfoSerializer
def list(self, request):
options = [{"albums": Album.objects.all()},
{"genres": Genre.objects.all()}]
results = InfoSerializer(options, many = True)
results.is_valid()
return Response(results.data)
我不断收到错误消息:
尝试在序列化程序
InfoSerializer上获取字段albums的值时出现 KeyError ...
【问题讨论】:
标签: django django-rest-framework django-serializer