【发布时间】:2020-10-11 21:01:28
【问题描述】:
假设我有这样的模型:
class A(models.Model):
...some fields here
class B(models.Model):
...some fields here
a = models.ForeignKey(A, on_delete=CASCADE)
class C(models.Model):
...some fields here
b = models.ForeignKey(B, on_delete=CASCADE)
...
我希望我的 API 端点返回类似这样的内容
{
...some fields here
b: [
{
...some field here
c: [{...}, {...} ...]
},
{
...some field here
c: [{...}, {...} ...]
}
...
]
}
我知道我可以这样做:
class Bserializer(serializers.ModelSerializer):
c = Cserializer(source="c_set", many=True, read_only=True,)
class Meta:
model = B
fields = [...some fields, "c"]
class Aserializer(serializers.ModelSerializer):
b = Bserializer(source="b_set", many=True, read_only=True,)
class Meta:
model = A
fields = [...some fields, "b"]
但如果这更深入或/并且模型有更多外键,它开始变得非常复杂。有没有办法递归地添加所有引用模型的实例。
【问题讨论】:
标签: python django serialization django-rest-framework