Performance: Serializer validation
MEDIUM IMPACT
Serializer validation affects the server response time and user experience by controlling how quickly data is checked and errors are returned before rendering.
class MySerializer(serializers.Serializer): def validate(self, data): item_ids = [item['id'] for item in data.get('items', [])] existing_ids = set(SomeModel.objects.filter(pk__in=item_ids).values_list('pk', flat=True)) if not all(id in existing_ids for id in item_ids): raise serializers.ValidationError('Invalid item') return data
class MySerializer(serializers.Serializer): def validate(self, data): # heavy nested loops and multiple DB queries for item in data.get('items', []): if not SomeModel.objects.filter(pk=item['id']).exists(): raise serializers.ValidationError('Invalid item') return data
| Pattern | DB Queries | Server Processing Time | Response Delay | Verdict |
|---|---|---|---|---|
| Loop with DB query per item | N queries for N items | High | High latency | [X] Bad |
| Batch DB query for all items | 1 query | Low | Low latency | [OK] Good |