我试图使用" select_related"使用DRF序列化程序的queryset方法, 但是这个例子仍在进行大量的SQL查询。
我如何获得相关对象" model_b"来自select_related方法?
class Model_A(models.Model):
title = models.CharField(max_length=100)
description = models.TextField()
model_b = models.ForeignKey(Model_B, null=True, blank=True)
class Model_B(models.Model):
title = models.CharField(max_length=100)
class Model_A_Serializer(serializers.ModelSerializer):
model_b = Model_B_Serializer(source="model_b")
class Meta:
model = Model_A
fields = ('title', 'model_b')
class Model_B_Serializer(serializers.ModelSerializer):
class Meta:
model = Model_B
class Model_A_View(viewsets.ModelViewSet):
serializer_class = Model_A_Serializer
queryset = Model_A.objects.select_related('model_b').all()
答案 0 :(得分:2)
queryset = Model_A.objects.all().prefetch_related('model_b')
此外,您可以使用this answer
将sql查询记录到控制台