我正在尝试显示用户组名称而不是它的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'
]
答案 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>]