Django ModelSerializer:如何序列化OneToMany关系

时间:2017-06-15 21:32:22

标签: django django-rest-framework

我会尝试简化我的问题:

我有一个模型X。我还有一个模型Y,其ForeignKey字段指向X。这意味着实际上我可能有Y属于X的许多实例(因此一对多关系)。

当我序列化X时,它不知道指向它的Y个实例。如何序列化与{I}当前序列化的Y关联的所有X个实例?

我是否必须进行某种自定义序列化?还是Django以某种方式支持这个?

1 个答案:

答案 0 :(得分:0)

docs在这里提供了一些基本选项,但不包括我认为最干净的选项;你通常不想更改Django Model类的默认值related_name(因为这违反了开发人员在使用Django时所采用的约定),而且你通常不希望公开related_name(因为它不是一个直观的API字段名称)。

通过这样做,您可以充分利用这两个方面:

class AlbumSerializer(serializers.ModelSerializer):
    tracks = serializers.RelatedField(source='track_set',
                                      many=True,
                                      read_only=True)

    class Meta:
        fields = ('tracks', ...)