Usage

There are 2 steps to use DRF EagerLoading:

First: In the desired serializer you will need to use the EagerLoadingSerializerMixin:

from drf_eagerloading.mixins import EagerLoadingSerializerMixin
class MyModelSerializer(EagerLoadingSerializerMixin, serializers.ModelSerializer):
    # Add the prefetch and select related fields
    select_related_fields = ("my_select_field",)
    prefetch_related_fields = ("my_prefetch_field",)

Note: when to use select_related_fields and prefetch_related_fields? Quick response: same as before!!

  • select_related_fields: one_to_one and many_to_many relations
  • prefetch_related_fields: many_to_many and one_to_many relations

Second: In the desired view you will need to use the EagerLoadingViewSetMixin:

from drf_eagerloading.mixins import EagerLoadingViewSetMixin
class MyModelViewSet(EagerLoadingViewSetMixin, viewsets.ModelViewSet):
    queryset = MyModel.objects.all()