如何使用Django-Rest-Framework返回单个对象

Tan*_*ivy 2 python django django-rest-framework

我试图返回带有配置文件信息的单个对象,但是却被卡住以换取数组。我如何只返回一个对象。

电流输出:

[{"id":1,"username":"someusername"}]
Run Code Online (Sandbox Code Playgroud)

所需的输出:

{"id":1,"username":"someusername"}
Run Code Online (Sandbox Code Playgroud)

serializers.py

from rest_framework import serializers
from django.contrib.auth.models import User


class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ('id', 'username')
Run Code Online (Sandbox Code Playgroud)

views.py

# from django.shortcuts import render
from django.contrib.auth.models import User
from profiles.serializers import UserSerializer
from rest_framework import viewsets
# Create your views here.


class CurrentUserViewSet(viewsets.ReadOnlyModelViewSet):
    """
    Lists information related to the current user.
    """
    serializer_class = UserSerializer

    def get_queryset(self):
        user = self.request.user.id
        return User.objects.filter(id=user)
Run Code Online (Sandbox Code Playgroud)

Ykh*_*Ykh 5

正常使用是用于/user/获取列表,用于/user/[user_id]/获取特定对象。如果要/user/返回详细信息,请执行以下操作:

class CurrentUserViewSet(viewsets.ReadOnlyModelViewSet):
    """
    Lists information related to the current user.
    """
    serializer_class = UserSerializer
    permission_classes = (IsAuthenticated,)

    def list(self, request, *args, **kwargs):
        instance = request.user
        serializer = self.get_serializer(instance)
        return Response(serializer.data)
Run Code Online (Sandbox Code Playgroud)