【问题标题】:drf serializer data not showing all fields data properlydrf 序列化程序数据未正确显示所有字段数据
【发布时间】:2021-01-28 05:58:58
【问题描述】:

id 字段和 name 字段未显示在结果中。

在models.py中:

class Group(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=50)
    admin = models.ForeignKey(User, on_delete=models.CASCADE)
    member = models.ManyToManyField(User, related_name='groups_user')

    def __str__(self):
        return self.name

在 serializers.py 中:

class SimpleUserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ('id','first_name', 'last_name')

class GroupSerializer(serializers.Serializer):
    admin = SimpleUserSerializer()
    class Meta:
        model = Group
        fields = ('id','name','admin')

views.py:

@api_view(['GET'])
@permission_classes((IsAuthenticated,))
def getSomeGroup(request):
    allGroup = Group.objects.all().count()
    randomGroupId = random.sample(range(allGroup), 3)
    randomGroup = Group.objects.filter(id__in=randomGroupId)
    serializer = GroupSerializer(randomGroup, many=True)
    #print(serializer)
    return Response(serializer.data)

结果是这样的:

[{"admin":{"id":1,"first_name":"asif","last_name":""}},{"admin":{"id":3,"first_name":" Test2","last_name":"lastname"}},{"admin":{"id":3,"first_name":"Test2","last_name":"lastname"}}]

为什么没有显示 idname 字段?

【问题讨论】:

    标签: python django django-rest-framework


    【解决方案1】:
    class SimpleUserSerializer(serializers.ModelSerializer):
        class Meta:
            model = User
            fields = '__all__'
    
    

    首先尝试访问所有管理员

    @api_view(['GET'])
    @permission_classes(IsAuthenticated)
    def getSomeGroup(request):
        randomGroup = Group.objects.all()
        serializer = GroupSerializer(randomGroup, many=True)
        return Response(serializer.data)
    

    如果可行,您的这两行可能有问题 问题可能在这两行

    allGroup = Group.objects.all().count()
    randomGroupId = random.sample(range(allGroup), 3)
    

    【讨论】:

    • 尝试在终端/cmd 打印 randomGroup,如果没有输出,则 get 或数据库有问题。
    【解决方案2】:

    修改serializers.py:

    class GroupSerializer(serializers.ModelSerializer):
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-23
      • 2019-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-17
      • 1970-01-01
      • 2020-07-19
      相关资源
      最近更新 更多