Как получить экземпляр пользователя с помощью django rest framework

Возможно, вопрос неправильно сформулирован. Я создал профиль пользователя с помощью Django с помощью следующих блоков кода:

models.py

class = Profile (models.Models):
    user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
first name = models.CharField(max_length=50)
•••

serializer.py
class profile_serializer(serializers.ModerlSerializer)
    class Meta:
        model = Profile
        fields = '__all__'

views.py
class profile_view(generics.ListCreateAPIView)
    queryset = Profile.objects.all().filter(user=instance)

urls.py
urlspatterns = [path('profile', profile_view.as_view(), name='user_profile)

Я определенно не знаю, как реализовать метод фильтрации, чтобы гарантировать, что будет получен только зарегистрированный пользователь. Или есть лучший подход для получения конкретного пользователя? Если я использую Project.objects.all() без фильтра, я получаю всех зарегистрированных пользователей, как и ожидалось. Но я не знаю, как получить конкретного пользователя.

Хм, я бы сделал что-то вроде этого:

from rest_framework.response import Response
from rest_framework import status, generics, permissions


class UserView(generics.GenericAPIView):
    permission_classes = (permissions.IsAuthenticated,)
    serializer_class = profile_serializer

    def get(self, request):
        user = request.user
        return Response(profile_serializer(user).data,status=status.HTTP_200_OK)

В основном, когда пользователь аутентифицирован, его пользователь присутствует в запросе.

Вот UserSerializer, комментарии было трудно форматировать. (Иронично для технического форума?)

from rest_framework import serializers

class UserSerializer(serializers.ModelSerializer):

    class Meta:
        model = User
        fields = '__all__'

    def get(self, instance):
        return instance

    def patch(self, instance, validated_data):
        instance.model_method()
        return super().update(instance, validated_data)

    def create(self, validated_data):
        user = self.context['request'].user
        return super().update(user, validated_data)

А вот profile_serializer:

class profile_serializer(serializers.ModerlSerializer):
    user = UserSerializer(read_only=True)

    class Meta:
        model = Profile
        fields = ('user', 'first_name', )

Вернуться на верх