Django Rest Framework,Custom Serializer和Id字段之间的关系

时间:2013-10-29 13:22:28

标签: django django-rest-framework

给定一个序列化程序,引用自定义序列化程序:

class IndustryIdeaSerializer(serializers.ModelSerializer):
    sub_industry = IndustrySerializer(many=False, read_only=True)
    class Meta:
        model = myModels.IdeaIndustry
        fields = (
            'id'
            , 'sub_industry'
    )

当我发布像{sub_industry:12}或{sub_industry_id:12}

这样的JSON时,我无法保存对此类的更改

它确实返回了用于显示数据的正确JSON,我不会从该角度更改它。但是将其更改为:

class IndustryIdeaSerializer(serializers.ModelSerializer):
    class Meta:
        model = myModels.IdeaIndustry
        fields = (
            'id'
            , 'sub_industry'
    )

给我保存操作(可以使用简单的JSON保留)我想要但不是读取操作(不返回与该外键关联的所有数据)!

首先我错过了一些明显的东西吗?是否有一种模式来处理我所追求的行为 - 即读取并返回深层树,但只持有Id的

1 个答案:

答案 0 :(得分:0)

没有任何内置可以明确处理此问题,但最近它已经出现了几次(例如here所以我们可能需要让它变得更容易。

解决方法是子类PrimaryKeyRelatedField,它将处理设置关系并覆盖to_native以提供您所追求的完整序列化。

我希望有所帮助。