Performance: Custom serializer fields
MEDIUM IMPACT
This affects the speed of data serialization and deserialization during API responses and requests, impacting server response time and perceived page load speed.
from django.db.models import Count class MySerializer(serializers.ModelSerializer): custom_field = serializers.IntegerField(read_only=True) class Meta: model = MyModel fields = ['id', 'name', 'custom_field'] # In the view or queryset, annotate the count to avoid extra queries queryset = MyModel.objects.annotate(custom_field=Count('relatedmodel'))
class MySerializer(serializers.ModelSerializer): custom_field = serializers.SerializerMethodField() def get_custom_field(self, obj): # Performs a database query for each object return RelatedModel.objects.filter(parent=obj).count() class Meta: model = MyModel fields = ['id', 'name', 'custom_field']
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| SerializerMethodField with DB queries per object | N/A (server-side) | N/A | N/A | [X] Bad |
| Pre-annotated field with IntegerField | N/A (server-side) | N/A | N/A | [OK] Good |