# setup_eager_loading class ProductPriceSerializer(serializers.ModelSerializer): product = ProductSerializer(read_only=True) @staticmethod def setup_eager_loading(queryset): queryset = queryset.prefetch_related("product") return queryset class Meta: model = ProductPrice fields = '__all__' class ProductPriceSerializer(serializers.ModelSerializer): product = ProductSerializer(read_only=True) data_type = serializers.SerializerMethodField() @classmethod def get_data_type(cls, obj): if hasattr(obj, 'price_before') and obj.price_before: return 'price' else: return 'new' @staticmethod def setup_eager_loading(queryset): queryset = queryset.prefetch_related("product") return queryset class Meta: model = ProductPrice fields = '__all__' ## 출처 - http://ses4j.github.io/2015/11/23/optimizing-slow-django-rest-framework-performance/