REST框架:如何序列化对象?

2024-09-30 22:25:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我想创建一个包含嵌套对象数组的ListView。以下是我迄今为止的尝试:

休息.py

class GroupDetailSerializer(serializers.ModelSerializer):
    class Meta:
        model = Group
        fields = (
            'id',
            'num',
            'students',
        )

@permission_classes((permissions.IsAdminUser,))
class GroupDetailView(mixins.ListModelMixin, viewsets.GenericViewSet):
    serializer_class = GroupDetailSerializer

    def get_queryset(self):
        return Group.objects.all()

型号.py

class Group(models.Model):
    office = models.ForeignKey(Offices)
    num = models.IntegerField()

    @property
    def students(self):
        from pupils.models import Pupils
        return Pupils.objects.filter(group=self)

但它返回一个类型错误:

<Pupils: John Doe> is not JSON serializable

我想我需要在我的students字段上使用另一个序列化程序,但是如何使用呢?你知道吗


Tags: 对象pyselfreturnobjectsmodelsdefgroup
1条回答
网友
1楼 · 发布于 2024-09-30 22:25:59

错误是因为您的模型不可json序列化。你知道吗

您可以看到@yuwang comment来跟踪嵌套序列化程序http://www.django-rest-framework.org/api-guide/serializers/#dealing-with-nested-objects

或者现在,特别是在这种情况下,您可以将代码更改为:

@property
def students(self):
    from pupils.models import Pupils
    return list(Pupils.objects.filter(group=self).values())

相关问题 更多 >