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

时间:2017-06-24 16:02:51

标签: django django-rest-framework

我正在使用django_rest_framework开展Django项目。我正在尝试创建一个序列化程序,该序列化程序将具有他所属的所有组的用户作为简单数组返回。

例如:

{
   "username": "John Doe",
   "groups": "[Group1, Group2]"
}

我当前的配置会将组作为对象返回并添加属性名称,因此我之前的示例很遗憾地返回如下:

{
   "username": "John Doe",
   "groups": "[{"name":"Group1"},{"name":"Group2"}]"
}

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

serializers.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')

2 个答案:

答案 0 :(得分:3)

您可以使用SerializerMethodField

var day = new Date().getDay();
if ((day & 1) == 0)
{
   greetings = "even";
}
else
{
   greetings = "odd";
}

答案 1 :(得分:0)

尝试覆盖GroupSerializer的to_representation方法:

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

    def to_representation(self, obj):
        return obj.name

没有测试过,请检查一下是否有效。