# 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/