在序列化程序中使用深度时如何选择特定列

时间:2014-04-21 16:12:30

标签: django django-rest-framework

我有一个由两个ForeignKeys组成的模型。我只对解析ForeignKeys的内容感兴趣,所以我使用depth变量,它基本上给了我用FK引用的表的所有列。有没有办法选择应该包含哪些列?

class SomeSerializer(serializers.ModelSerializer):
    class Meta:
        model = MyAwesomeModel
        fields = ('id', 'fk_one','fk_two')
        depth = 1

1 个答案:

答案 0 :(得分:7)

尝试使用嵌套序列化程序。文档here

示例:

class FKOneSerializer(serializers.ModelSerializer):
    class Meta:
        model = FKOne
        fields = ('name', 'id')

class SomeSerializer(serializers.ModelSerializer):
    fk_one = FKOneSerializer()

    class Meta:
        model = MyAwesomeModel
        fields = ('id', 'fk_one','fk_two')

编辑:

Django Rest Framework的创建者的类似答案here。还包括一些相关注释,包括嵌套序列化程序是只读的,您可能需要在序列化程序字段中包含source参数。