[英]How to implement nested queryset in Django ORM?
我正在从django rest框架构建API。 我有一个模型,其中有某些外键。 对于该模型清单,我正在使用ListAPIView。 在该清单中,我想实现嵌套的查询集。 外键模型之间没有直接关系。 在下面的示例中。 对于多个x,可以有多个y,对于多个y,可以具有多个z。 所以我想要唯一的x的json响应,并在该对象中的y和z。
我尝试使用注释和子查询。 但这似乎并不能解决我的问题。
Table:
|x_id | y_id | z_id |
|1 | 2 | 3 |
|1 | 4 | 5 |
|1 | 2 | 6 |
class Workitem(models.Model):
{
x_id = # foreign key
y_id = # foreign key
z_id = # foreign key
}
class x(models.Model):
{
x_id =
x_name =
x_details =
}
class y(models.Model):
{
y_id =
y_unique_name =
y_task_details =
}
class z(models.Model):
{
z_id =
z_acc_name =
z_acc_details =
}
class WorkitemSerializer(serializers.ModelSerializer)
class Meta:
model = Workitem
fields = '__all__'
depth=2
当前我正在获取JSON响应
{
"count": 1,
"next": null,
"previous": null,
"results":
[
{ "x_id": {"x_details"},
"y_id": {"y_details"},
"z_id": {"z_details"}
}
]
}
我想要回应
{
"count": 1,
"next": null,
"previous": null,
results: ["x_id":{
"x_details":
"y_id": {
"y_details":
"z_id": {
"z_details":
}
},
},
]
}
对于这种响应,您需要将序列化器链接起来
from rest_framework import serializers
class zserializer(serializers.ModelSerializer)
class Meta:
model = zModel
fields = '__all__'
class yserializer(serializers.ModelSerializer)
zobjects = zserializer(many=True)
class Meta:
model = yModel
fields = ('id', 'zobjects')
class xserializer(serializers.ModelSerializer)
yobjects = yserializer(many=True)
class Meta:
model = xModel
fields = ('id', 'yobjects')
然后在视图中使用xserializer列出。 让我们知道这是否可以解决您的查询。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.