已扩展关系模型数据的Django查询集列表
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了已扩展关系模型数据的Django查询集列表相关的知识,希望对你有一定的参考价值。
在我的Django webapp中,我有基于功能的API,它显示了一个分页列表。问题是我希望列表中的每一行都有扩展的关系字段输出。
这是我出席的模式:
class Attendance(models.Model):
CHECKIN = 1
CHECKOUT = 2
ATTENDANCE_TYPE_CHOICES = (
(CHECKIN, "Check In"),
(CHECKOUT, "Check Out"),
)
employee = models.ForeignKey(Employee)
company = models.ForeignKey(Company)
activity_type = models.IntegerField(choices = ATTENDANCE_TYPE_CHOICES, default=CHECKIN)
这是我的列表API的一部分,我在其中定义了我想要显示的字段并进行了分页。
employee_list = Employee.objects.filter(company = auth_employee.employee.company.id).values("id","employee","company","activity_type").order_by('id')
page = request.GET.get('page', request.POST['page'])
paginator = Paginator(employee_list, request.POST['page_limit'])
try:
employees = paginator.page(page)
except PageNotAnInteger:
employees = paginator.page(request.POST['page'])
except EmptyPage:
employees = paginator.page(paginator.num_pages)
return Response(list(employees), status=status.HTTP_200_OK)
输出是这样的列表,但没有员工详细信息。
[
{
"id": 14,
"employee": 15,
"company": 15,
"activity_type": 1,
},
{
"id": 15,
"employee": 15,
"company": 15,
"activity_type": 2,
}
]
我的预期输出,我怎么得到这样的东西?
[
{
"id": 14,
"employee": {
"id":"2",
"name":"Michael"
},
"company": 15,
"activity_type": 1,
},
{
"id": 15,
"employee": {
"id":"2",
"name":"Jeniffer"
},
"company": 15,
"activity_type": 2,
}
]
如何生成一个列表,显示如上所示的关系数据以显示在json响应中?
答案
你所描述的是序列化,在这种情况下是嵌套序列化,其中django模型关系引用在上面描述的结构中被序列化。
使用django没有开箱即用的方法。 django-rest-framework
项目用他们的nested serializers
解决了这个问题
如果您正在处理将结果输出到JSON以供Django模板以外的某些服务或客户端使用的API,我会认真考虑将其添加到您的项目中。
以上是关于已扩展关系模型数据的Django查询集列表的主要内容,如果未能解决你的问题,请参考以下文章
无法在 graphene_django 中获取 OneToOne 关系查询的值