данные сериализатора drf не отображают данные всех полей должным образом

#python #django #django-rest-framework

#python #django #django-rest-framework

Вопрос:

поле идентификатора и поле имени не отображаются в результате.

в 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»}}]

почему не отображаются поля id и name?

Ответ №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)
 

Комментарии:

1. попробуйте напечатать randomGroup в terminal / cmd, и если вывод не приходит, возникает проблема в get или database.

Ответ №2:

Изменить serializers.py:

 class GroupSerializer(serializers.ModelSerializer):