Django-rest框架:将queryset转换为json响应

2024-04-28 03:40:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个模型,约会和雇员事件。我需要从这些模型中得到一个数据和结果。在

在网址.py在

url(r'^calenderevents', calender_events)

在视图.py在

^{pr2}$

当我调用API时,我得到了结果,但它包含了一些不需要的键,如“pk”、“model”、“fields”等。同样,在appoinces结果中,我需要完整的customer对象而不是customer id。有没有办法在查询集的同时指定CustomerSerializer?在

正在取得的成果

{
  "Appointments": [
    {
      "pk": "33a0fffb-326e-4566-bfb4-b146a87a4f3f",
      "model": "appointment.appointment",
      "fields": {
        "customer": "25503315-8bac-4070-87c1-86bf0630c846",
        "status": "Requested",
        "description": "Assigned appointment",
      }
    },
    {
      "pk": "9da806f5-77f1-41e6-a745-7be3f79d6f7a",
      "model": "appointment.appointment",
      "fields": {
        "customer": "25503315-8bac-4070-87c1-86bf0630c846",
        "status": "Requested",
        "description": "Assigned appointment",
      }
    }
  ],
  "EmployeeEvents": [
    {
      "pk": "f76b5de0-1ab8-4ac3-947d-15ba8941d97d",
      "model": "employee_event.employeeevent",
      "fields": {
        "event_name": "New Event",

        "start_date": "2017-02-17",
        "end_date": "2017-02-22"
      }
    },
    {
      "pk": "56f02290-370e-426c-951e-a93c57fde681",
      "model": "employee_event.employeeevent",
      "fields": {
        "event_name": "New Event",
        "start_date": "2017-02-02",
        "end_date": "2017-03-22"
      }
    }
  ]
}

预期结果

{
  "Appointments": [
    {
      "id": "33a0fffb-326e-4566-bfb4-b146a87a4f3f",
      "customer": {
        "id": "25503315-8bac-4070-87c1-86bf0630c846",
        "firstname": "Customre 1",
        "photo_url": "imagepath",
      },
       "status": "Requested",
       "description": "Assigned appointment"
    },
    {
      "id": "9da806f5-77f1-41e6-a745-7be3f79d6f7a",
      "customer": {
        "id": "15ba8941d97d-8bac-4070-87c1-86bf0630c846",
        "firstname": "Customre 2",
        "photo_url": "imagepath",
      },
       "status": "Requested",
       "description": "Assigned appointment"
    },
    }
  ],
  "EmployeeEvents": [
    {
      "id": "f76b5de0-1ab8-4ac3-947d-15ba8941d97d",
      "event_name": "New Event 1",
      "start_date": "2017-02-17",
      "end_date": "2017-02-22"
    },
    {
      "id": "56f02290-370e-426c-951e-a93c57fde681",
      "event_name": "New Event 2”,
      "start_date": "2017-02-17",
      "end_date": "2017-02-22"
    }
  ]
}

Tags: nameeventidfieldsnewdatemodelstatus
1条回答
网友
1楼 · 发布于 2024-04-28 03:40:53

您需要编写序列化程序以所需格式显示数据。阅读优秀的教程来指导你正确地理解它。但是,如果你想得到一个简单的答案,那么你可以这样做:

serializer = AppointmentSerializer(Appointment.objects.all(), many=True)
return Response(serializer.data)

序列化程序如下所示:

^{pr2}$

编辑:更新以包含相关对象的示例

相关问题 更多 >