Передача имени пользователя запроса в сериализатор из 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