我有三个代表模型中不同部分的类:SectionA
,SectionB
,SectionC
。
这些部分中的每一部分都关联了一组项目(我的模型中的类Item
)。
我想得到一个类似于此的json:
{
"sectionA": [
{
"id": 1,
"picture": "car_pic1",
"category": "cat1"
},
{
"id": 3,
"picture": "car_pic1",
"category": "cat2"
},
{
"id": 5,
"picture": "car_pic1",
"category": "cat3"
}
],
"sectionB": [
{
"id": 2,
"picture": "car_pic1",
"category": "cat8"
},
{
"id": 4,
"picture": "car_pic1",
"category": "cat9"
},
{
"id": 7,
"picture": "car_pic1",
"category": "cat10"
},
],
"sectionC": [
{
"id": 9,
"picture": "car_pic1",
"category": "cat9"
},
{
"id": 10,
"picture": "car_pic1",
"category": "cat9"
},
{
"id": 11,
"picture": "car_pic1",
"category": "cat10"
},
]
}
此json显示与每个部分相关的任何三个项目。
我想知道如何使用rest-framework实现这一点。基本上我需要执行一个查询检索每个部分的三个项目(因为这个json没有关联到模型对象)并将所有这些序列化为json。我不确定在何处或如何执行这些查询,到目前为止我没有取得任何成功。
答案 0 :(得分:3)
最后我做的略有不同。我的视图只是为每个部分及其相关项创建一个字典:
class SectionList(APIView):
"""
List three objects for each section.
"""
def generate_data(self):
#query to get the items of each section
list_items = []
list_items.append({"section" : "sectionA", "items" : secA_items})
list_items.append({"section" : "sectionB", "items" : secB_items})
list_items.append({"section" : "sectionC", "items" : secC_items})
return list_items;
def get(self, request, format=None):
section_list = self.generate_data()
serializer = SectionSerializer(section_list)
return Response(serializer.data)
这是我使用的序列化器:
class SectionSerializer(serializers.Serializer):
section = serializers.CharField(max_length=200)
items = ItemSerializer(many=True)