Django Rest Framework 使用自定义键将模型序列化为对象

Django Rest Framework Serialize Model into Object with Custom Key

我正在使用 Django 和 djangorestframework。我知道将模型序列化为对象列表,但我目前想将它们序列化为具有自定义键的对象。对于这个实例,我想将用户模型序列化为对象的对象,其访问键是用户的用户名。

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']

views.py:

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

class UserViewSet(viewsets.ModelViewSet):
    queryset = User.objects.all()
    serializer_class = UserSerializer

当前输出:

[
    {
        "id": 1,
        "username": "username_a"
    },
    {
        "id": 2,
        "username": "username_b"
    }
]

期望的输出:

{
    "username_a": {
        "id": 1
    },
    "username_b": {
        "id": 2
    }
}

替代的期望输出:

{
    "username_a": {
        "id": 1,
        "username": "username_a"
    },
    "username_b": {
        "id": 2
        "username": "username_b"
    }
}

这将有助于获得“替代的所需输出”:

from django.contrib.auth.models import User
from rest_framework import viewsets
from .serializers import UserSerializer
from rest_framework.response import Response

class UserViewSet(viewsets.ModelViewSet):
    queryset = User.objects.all()
    serializer_class = UserSerializer

    def list(self, request):
        queryset = User.objects.all()
        serializer = UserSerializer(queryset, many=True)
        list_of_objects = serializer.data
        object_of_objects = {}
        custom_key = "username"
        for current_object in list_of_objects:
            object_of_objects[current_object[custom_key]] = current_object
        return Response(object_of_objects)