在成功保存对象后,有一种常见的模式可以返回serializer.data
。但是,如果to_internal_value
返回Django对象(例如在PrimeryKeyRelatedField
中),则Response
会产生此错误:
raise TypeError(repr(o) + " is not JSON serializable")
一些解决方案:
以其他方式运行该数据,即FooSerializer(data=serializer.data)
手动替换它,即serializer.data['field'] = serializer.data['field'].pk
在某处继承某些内容,以便Response可以接受Django对象并默认为__str__
表示(但可能是不可能的,除非isinstance
能够知道它是否为#{1}}。是models.Model
)的子类
不要返回[整个]对象。另一方显然有他们发送的数据的副本,所以没有理由发回服务器没有改变的字段。
这些解决方案中哪一个最具Pythonic,还是没有更好的解决方案?
答案 0 :(得分:0)
在成功保存对象后,有一种常见的模式可以返回serializer.data。
不,这可能是一种常见的反模式。
它返回不同的serializer.validated_data。