获取用户名称DRF

时间:2018-03-22 10:33:57

标签: python django django-rest-framework

我正在尝试显示用户组名称而不是它的ID 我有这个用户类的serilizer类,我将这个User = auth.get_user_model()用于用户模型 但它显示NULL而不是theier名称..当我删除get_groups函数时,我会看到相关的组id为什么?

获取所有用户组的正确方法是什么?

class UserSerializer(ModelSerializer):

    groups = SerializerMethodField()
    def get_groups(self, obj):
        return obj.groups.name

    class Meta:
        model = User
        fields = [
            'id',
            'username',
            'first_name',
            'last_name',
            'email',
            'date_joined',
            'last_login',
            'is_staff',
            'is_superuser',
            'is_active',
            'groups'
        ]

2 个答案:

答案 0 :(得分:0)

试试吧

groups = serializers.SlugRelatedField(many=True, read_only=True, slug_field="name")

答案 1 :(得分:0)

试试这个,

class UserSerializer(ModelSerializer):

    def get_groups(self, obj):
        return obj.groups.values_list('name', flat=True)

    class Meta:
        model = User
        fields = [
            'id',
            'username',
            'first_name',
            'last_name',
            'email',
            'date_joined',
            'last_login',
            'is_staff',
            'is_superuser',
            'is_active',
            'groups'
        ]


这将返回与特定用户相关的所有格鲁为list

示例:

In [5]: user =User.objects.get(id=1)

In [6]: user.groups.values_list('name',flat=True)
Out[6]: ['grp_name_1', 'grp_name_2']

In [8]: user.groups.all()
Out[8]: [<Group: grp_name_1>, <Group: grp_name_2>]