使用Django休息
下面是我如何使用serializer.py.
class ProfileSerializer(serializers.ModelSerializer):
class Meta:
model = Profile
fields = ('id', 'name', 'active', 'type')
Run Code Online (Sandbox Code Playgroud)
类型是平面视图
然后我改变它,所以'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'')
Run Code Online (Sandbox Code Playgroud)
现在这种方法很完美,但我现在只能在配置文件详细信息中更新"类型",现在它是只读的.
如何在创建新配置文件时添加类型并仍保留此嵌套视图?
我希望我已经清楚地解释了这一点.
更新:
好的,我刚看过这个:
注意:嵌套序列化程序仅适用于只读表示形式,因为如果在更新实例时使用它们,则会出现模糊或不明显的行为.对于读写表示,您应始终使用FlatField子类之一来使用平面表示.
这是有道理的.所以我改成了....
type = serializers.PrimaryKeyRelatedField()
Run Code Online (Sandbox Code Playgroud)
这使它回到POST并工作,但这是一个耻辱,我不能用ID和名称代表'类型',这样对最终用户更有意义吗?