繁体   English   中英

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

[英]REST Framework: how to serialize objects?

我想用嵌套对象数组创建一个ListView。 这是我到目前为止尝试过的:

rest.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()

models.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字段中使用另一个序列化器,但是如何?

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

您可以看到@yuwang评论来关注嵌套序列化程序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())

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM