下面是我的 serializer.py 的方式。
class ProfileSerializer(serializers.ModelSerializer):
class Meta:
model = Profile
fields = ('id', 'name', 'active', 'type')
类型是平面视图
然后我对其进行了更改,因此像这样为每个配置文件嵌套了“类型”...
class TypeSerializer(serializers.ModelSerializer):
class Meta:
model = Type
fields = ('id', 'name', 'active')
class ProfileSerializer(serializers.ModelSerializer):
type = TypeSerializer()
class Meta:
model = Profile
fields = ('id', 'name', 'active', 'type'')
现在这很完美,但我现在只能在配置文件详细信息中更新“类型”,它现在是只读的。
如何在创建新配置文件时添加类型并仍保留此嵌套视图?
我希望我已经解释清楚了。
更新:
好的,我刚读到这个:
注意:嵌套序列化程序仅适用于只读表示,因为在某些情况下,如果在更新实例时使用它们会产生模棱两可或不明显的行为。对于读写表示,您应该始终通过使用相关字段子类之一来使用平面表示。
所以这是有道理的。所以我把它改成......
type = serializers.PrimaryKeyRelatedField()
这让它回到 POST 并工作,但很遗憾,我不能用 ID 和名称表示“类型”,这样对最终用户更有意义吗?