小编red*_*shq的帖子

如何查询 Wagtail 标签而不创建数百个查询,n+1 问题?

当我尝试获取导致数百个查询的数据时,我有一些条目,每个条目都有数十个“标签”。虽然使用预取适用于我所有的其他模型和链接,但它似乎不适用于此。下面的帖子说它与 wagtails 假查询功能有关,但尚未修复。有没有办法利用标签,我可以通过 api 获取它们,这样它们就不会创建数百个查询(每个标签一个),使它们由于响应时间慢而无法使用?

您能提供的任何帮助将不胜感激。

这里提出了一个类似的问题,但没有答案 如何预取 Wagtail 帖子标签?

此外,当我使用 prefetch 时,它实际上使查询数量增加了一倍

这是我的代码:

# serializer.py////////////////////////////////////

# orderable models links
# Custom searializers to add custom display fields
class EventCollectionSerializer(serializers.ModelSerializer):
    class Meta:
         model = CategoryEventCollection
         fields = ['id', 'collection_name', 'collection_event']

class TagSerializer(serializers.ModelSerializer):
    class Meta:
         model = Tag
         fields = ['name', 'id']


# MAIN SERIALIZER PRIMARY FOCUS
class PrimaryFocusSerializer(serializers.HyperlinkedModelSerializer):

     # assign fields to custom serializer
     event_collection = EventCollectionSerializer(many=False)
     tags = TagSerializer(many=True)


class Meta:
    model = PrimaryFocus
    fields = ['id',
              'event_collection',
              'title_major', …
Run Code Online (Sandbox Code Playgroud)

python django prefetch django-rest-framework wagtail

8
推荐指数
0
解决办法
294
查看次数