假设我有一个像这样的模型:
class Car(models.Model):
images = models.ManyToManyField(Image)
class Image(models.Model):
path = models.CharField()
type = models.CharField()
我想公开两个 API 视图:
- 汽车清单
- 汽车细节
在列表视图中,我只想显示 type="thumbnail" 的图像。在详细信息视图中,我想显示 type="image" 的图像。
这或多或少应该是列表的样子:
[{
"id": 1,
"images": [1, 2],
},
{
"id": 2,
"images": [3, 4],
}]
和细节视图:
{
"id": 1,
"images": [5],
}
请注意,根据视图显示不同的图像 ID。
到目前为止,我的序列化程序如下所示:
class CarSerializer(serializers.ModelSerializer):
images = serializers.ManyPrimaryKeyRelatedField()
class Meta:
model = Car
列表 api 视图:
class CarList(generics.ListAPIView):
model = Car
serializer_class = CarSerializer
详细api视图:
class CarDetails(generics.RetrieveAPIView):
model = Car
serializer_class = CarSerializer
这当然会为我提供列表中的所有图像以及详细信息,并迫使客户进行额外的调用以获取应显示的图像类型。
有什么通用的方法吗?我看过 django-filter 示例,但似乎只能过滤列出了哪些对象,而不是列出了列出的对象中的哪些相关对象。