【问题标题】:How to serialize groups of a user with Django-Rest-Framework如何使用 Django-Rest-Framework 序列化用户组
【发布时间】:2016-02-23 23:07:03
【问题描述】:

我正在尝试使用 Django REST 框架获取用户组,但我得到的只是名为“groups”的空字段。

这是我的 UserSerializer:

class UserSerializer(serializers.ModelSerializer):    
    class Meta:
        model = User
        fields = ('url', 'username', 'email', 'is_staff', 'groups')

任何想法如何获取用户组数据?

提前致谢

【问题讨论】:

标签: python django rest django-rest-framework


【解决方案1】:

您必须指定它是嵌套关系:

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

class UserSerializer(serializers.ModelSerializer):    
    groups = GroupSerializer(many=True)
    class Meta:
        model = User
        fields = ('url', 'username', 'email', 'is_staff', 'groups',)

查看文档以获取更多信息:Nested relationships

【讨论】:

  • 您忘记在 GroupSerializer 中的“名称”后添加逗号。应该是:fields = ('name', )
  • 感谢您的帮助!
  • 你需要添加这个导入from django.contrib.auth.models import Group
【解决方案2】:

这样的事情应该可以工作。

from django.contrib.auth.models import Group


class UserSerializer(serializers.ModelSerializer): 
    groups = serializers.SlugRelatedField(
        many=True,
        read_only=True,
        slug_field='name',
     )  
 
    class Meta:
        model = User
        fields = ('url', 'username', 'email', 'is_staff', 'groups',)

【讨论】:

  • 欢迎来到 SO。请考虑在答案中包含对代码的解释。
猜你喜欢
  • 2014-08-12
  • 2015-01-07
  • 2018-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-04
相关资源
最近更新 更多