Передача имени пользователя запроса в сериализатор из Viewset в Django Rest Framework

Я хочу передать имя пользователя, вошедшего в систему, из ListCreateAPIView в ModelSerializer, чтобы использовать объект с тем же PrimaryKey из модели Clients по умолчанию, но я не понимаю, как сделать это правильно.

В views.py:


class CartAPIList(generics.ListCreateAPIView):
    queryset = Clientcarts.objects.all()
    serializer_class = CartSerializer
    permission_classes = (IsAuthenticatedOrReadOnly, )

В serializers.py:

class CartSerializer(serializers.ModelSerializer):
    client_id = serializers.HiddenField(default=Clients.objects.get(pk="username"))

    class Meta:
        model = Clientcarts
        fields = '__all__'

Можете ли вы, ребята, помочь мне?

В Django rest framework мы используем контекст для отправки дополнительных данных в сериализатор. Поэтому вы можете сделать что-то вроде этого:

def get_serializer_context(self):
        context = super().get_serializer_context()
        if self.request and self.request.user:
        context['username']=self.request.user.username
        return context

Передайте context = {'user': request.user} в качестве аргумента класс сериализатора в views.py файле.

Тогда вы можете использовать значение контекста в CartSerializer в serializers.py файле как:

user = serializers.SerializerMethodField()

def get_user(self, obj):
    user = self.context.get('user')
    return user
Вернуться на верх