在 Django Rest Framework 中将用户组序列化为没有关键字的数组

hY8*_*Xib 1 django django-rest-framework

我正在使用 django_rest_framework 处理 Django 项目。我正在尝试创建一个序列化程序,它将用户及其所属的所有组作为一个简单数组返回。

例如:

{
   "username": "John Doe",
   "groups": "[Group1, Group2]"
}
Run Code Online (Sandbox Code Playgroud)

然而,我当前的配置将组作为对象返回并添加属性名称,因此不幸的是,我之前的示例返回如下:

{
   "username": "John Doe",
   "groups": "[{"name":"Group1"},{"name":"Group2"}]"
}
Run Code Online (Sandbox Code Playgroud)

你能用 django_rest_framework 获得我想要的结果吗?这是我的序列化程序:

序列化程序.py

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


class GroupSerializer(serializers.ModelSerializer):
    class Meta:
        model = Group
        fields = ('name',)


class UserSerializer(serializers.ModelSerializer):
    groups = GroupSerializer(many=True)

    class Meta:
        model = User
        fields = ('username', 'groups')
Run Code Online (Sandbox Code Playgroud)

Dim*_*osh 6

您可以使用SerializerMethodField

class UserSerializer(serializers.ModelSerializer):
    groups = SerializerMethodField()

    class Meta:
        model = User
        fields = ('username', 'groups')

    def get_groups(self, obj):
        return [group.name for group in obj.groups]
Run Code Online (Sandbox Code Playgroud)