Django的嵌套序列化器可嵌套子字段

时间:2020-09-01 13:51:31

标签: python django django-rest-framework

我有一个检索查询集(Region.objects.filter(id=region_id))的视图集,并且我想对查询集进行序列化以包括许多外键引用的表,如下所示:

Region >> Market >> Baskets >> Fruits

每个fruit都有一个basket_id

每个basket都有一个market_id

每个market都有一个region_id

我有一个序列化器:

class RegionSerializer(serializers.ModelSerializer):
    markets = serializers.SerializerMethodField()

    class Meta:
        model = Region
        fields = '__all__'

    def get_markets(self, obj):
        return ==(list(obj.region_set.all().filter(region_id=obj.id).values()))

到目前为止,这很适合检索市场列表,但是我想嵌套它,所以我有一个区域,该区域的单个市场列表,每个市场上的单个篮子列表以及单个水果列表在每个篮子里。

我不确定如何使用序列化器完成上述子字段。

1 个答案:

答案 0 :(得分:2)

这样的作品行吗?对于我认为的FK关系,您需要使用setupFilesAfterEnv: ['<rootDir>/_ui/test/setupTest.js'],在下面的示例中,水果和篮子之间的FK将设置为related_name

related_name='fruit'

值得一提的是,考虑嵌套这样的负载对性能的影响。最终可能会严重打击数据库。