簡體   English   中英

獲取用戶組名稱DRF

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM