因为我正在使用django rest框架构建我的产品api。你知道吗
这是我的模特儿型号.py你知道吗
class Tag(models.Model):
tag = models.CharField(max_length=10, unique=True)
class Product(models.Model):
product_name = models.CharField(max_length=100)
tag = models.ManyToManyField(Tag, blank=True, default=None, related_name='product_tag')
你知道吗序列化程序.py地址:
class TagSerializer(serializers.ModelSerializer):
class Meta:
model = Tag
fields = '__all__'
class ProductSerializer(serializers.HyperlinkedModelSerializer):
tag = TagSerializer(many=True, read_only=True)
class Meta:
model = Product
fields = '__all__'
你知道吗视图.py地址:
class ProductViewSet(viewsets.ModelViewSet):
queryset = Product.objects.all()
serializer_class = ProductSerializer
我已经给出了ProductViewset的url,所以当我点击api时,它也会给出结果,但是加载要花费太多时间,大约需要2分钟才能给出响应。你知道吗
数据库中有2000个产品对象需要填充。你知道吗
当我排除“ProductSerializer”中的“tag”字段时,所有2000条记录的响应速度都非常快。你知道吗
请说明漏洞在哪里,为什么它会对性能产生如此大的影响,特别是当我添加了这么多字段时。你知道吗
我总是使用django-debug-toolbar来调试我的queryset,以便在我的项目中找到瓶颈/重复查询。Django orm总是使用lazy load从数据库中检索相关字段。 通过使用
prefetch_related
快速加载多对多字段,可以更改queryset的默认行为。你知道吗引用:prefetch_related
相关问题 更多 >
编程相关推荐