我想创建一个数据可视化API,在这里我需要使用ASerializer
的结果,通过它们的给定标记,以便根据它们的关联标记将每个对象分类到类别中。如果对象包含两个标记,那么它应该同时显示在这两个标记中。e、 g
current output
{
"count":117,
"next":"http://localhost:8002/api/v1/demo/list/?page=2",
"previous":null,
"results":[
{
"_id": "T1189",
"title": "promise",
"tag": [
"Demo",
"Demo2"
],
"queries": [],
}
]
}
desired format
[
{
"Demo": [
{
"_id": "T1189",
"title": "promise",
"tag": [
"Demo",
"Demo2"
],
"queries": [],
}
],
"Demo2": [
{
"_id": "T1189",
"title": "promise",
"tag": [
"Demo",
"Demo2"
],
"queries": [],
}
],
}
]
代码
# serializers
class TagSerializer(serializers.ModelSerializer):
def to_representation(self, value):
print(value)
return value.name
class Meta:
model = Tag
fields = ('name',)
class ASerializer(serializers.ModelSerializer):
queries = QueriesSerializer(source='modelb_set', many=True)
tag = TagSerializer(many=True)
class Meta:
model = ModelA
fields = ('_id','title', 'tag','queries',)
class QueriesSerializer(serializers.ModelSerializer):
class Meta:
model = ModelB
fields = '__all__'
#viewsets
class BooksViewSet(mixins.ListModelMixin,
viewsets.GenericViewSet):
queryset = ModelA.objects.all()
serializer_class = ASerializer
如果在数据库中
Tags
和ModelA
之间存在反向关系,则可以对其执行一些子查询。但是,对我来说,在视图层中执行此srot的后期处理看起来非常简单:相关问题 更多 >
编程相关推荐