Search code examples
djangodjango-rest-frameworkdjango-serializerdrf-queryset

How I can use Nested serializer in Django Rest Framework


Hi I'm creating a serializer where I wanna show user profile details and all his products from the product model but it's not working

serializer.py

class UserSerializer(serializers.ModelSerializer):

related_products = ProductSerializer(
    source="user.product_set.all", read_only=True, many=True
)

class Meta:
    model = User
    fields = [
        "first_name",
        "last_name",
        "bio",
        "phone",
        "agency",
        "related_products",
    ]

views.py

class ProfileView(generics.RetrieveAPIView):
serializer_class = UserSerializer
permission_classes = [permissions.IsAuthenticated, onlyuser]

def retrieve(self, request, *args, **kwargs):
    serializer = self.serializer_class(request.user)
    return Response(serializer.data, status=status.HTTP_200_OK)

Solution

  • I found a solution if its a fine approach you can use it in your project

    class ProfileView(generics.RetrieveAPIView):
    def get(self, request, *args, **kwargs):
    
        qs = Product.objects.filter(user=request.user)
        data = {
            "user_profile": UserSerializer(request.user).data,
            "user_products": ProductSerializer(
                qs, many=True, context={"request": request}
            ).data,
        }
        return Response(data=data)