For example, I have a Person
model and its serializer
class Person(models.Model):
first_name = models.CharField(max_length=255)
last_name = models.CharField(max_length=255)
sex = models.IntegerField()
phone = models.CharField(max_length=255)
class SimplePersonSerializer(serializer.ModelSerializer):
class Meta:
model = Person
fields = ('first_name', 'last_name')
Then in my view function, I can:
@api_view(['GET'])
def people(request):
people = Person.objects.all()
data = SimplePersonSerializer(people, many=True).data
return Response(data)
However, when I profiler it using django-debug-toolbar
, it shows that the serializer ask SQL Server
to select all field of Person
model, despite I only need first_name
and last_name
.
I know I can change people = Person.objects.all()
to people = Person.objects.all().only('first_name', 'last_name')
to make it. But I wonder if I can do this inside the serializer.