[英]Get users goup name DRF
我正在嘗試顯示用戶組名稱而不是其id。
我為用戶類提供了這個serilizer類,並為用戶模型使用了User = auth.get_user_model()
,但是它顯示的是NULL而不是他們的名字。.當我刪除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'
]
試試吧
groups = serializers.SlugRelatedField(many=True, read_only=True, slug_field="name")
嘗試這個,
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>]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.