小编use*_*978的帖子

Django.rest_framework:如何序列化一对多?

我有一些麻烦与django序列化.我有三个模型,比如一个学校,一个房间和一个桌子(例如虚拟名称).每个学校都有多个房间,每个房间都有多个办公桌.

这些类及其关系如下所示:

class School(models.Model):
    name = models.CharField()

class Room(models.Model):
    name = models.CharField()
    school_id = models.ForeignKey(School)

class Desk(models.Model):
    row = models.IntegerField()
    col = models.IntegerField()
    room_id = models.ForeignKey(Room)
Run Code Online (Sandbox Code Playgroud)

我想能够序列化学校列表,每个列表直接包含里面的所有办公桌.

我得到的壁橱是在我的serialize.py三个序列化器中写的:

class DeskSerializer(serializers.ModelSerializer):
    class Meta:
        field = (row, col,)

class RoomSerializer(serializers.ModelSerializer):

    desks = DeskSerializer(source='desk_set', many=True)
    class Meta:
        field = (desks,)

class SchoolSerializer(serializers.ModelSerializer):

    rooms = RoomSerializer(source='room_set', many=True)
    class Meta:
        field = (name, rooms,)
Run Code Online (Sandbox Code Playgroud)

哪个返回学校列表,其中包含一个包含桌面列表的房间列表,当我想要一个包含桌面列表的学校列表时

我应该在School serializer中使用哪个源直接返回桌面?像source ='room_set.desk_set'之类的东西?或者也许通过使用transform_函数?

PS:代码是从头开始写的,请忽略可能的语法错误

python django serialization django-queryset django-rest-framework

10
推荐指数
1
解决办法
5819
查看次数