我有類似下面的數據庫關係:如何在django rest框架中將小型查詢與嵌套序列化器結合使用?
+-----------+
| Container |
+-----------+
| id |
+-----------+
|
|1..n
+--------------+
| Child |
+--------------+
| id |
| container_id |
+--------------+
我想窩在Container
串行的Child
的序列化,所以我可以在一個HTTP請求的兩個對象。但是,當我查詢Containers
的列表時,Django REST Framework會執行一個查詢來獲取所有Containers
,但隨後會爲與特定Container
對象關聯的每個對象集Child
執行一組單個查詢。這裏是我的玩具例子:
# Models
class Container(models.Model):
pass
class Child(models.Model):
container = models.ForeignKey(Container,related_name="children")
# Serializers
class ChildSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Child
fields = ('url','container')
class ContainerSerializer(serializers.HyperlinkedModelSerializer):
children = ChildSerializer(many=True)
class Meta:
model = Container
fields = ('url','children')
# Views
class ContainerViewSet(viewsets.ModelViewSet)
queryset = Container.objects.all()
serializer_class = ContainerSerializer
class ChildViewSet(viewsets.ModelViewSet)
queryset = Child.objects.all()
serializer_class = ChildSerializer
有沒有辦法凝聚所有Child
查詢到一個後臺查詢,然後分配結果Container
對象之中?