例如在DRF中编写序列化程序时,如下所示:
%matplotlib inline
read_only属性在这里做什么?还有只读串行器,那是什么?
答案 0 :(得分:0)
read_only
属性意味着TrackSerializer
字段仅在实例被序列化(例如,调用serializer.data
或serializer.get_representation()
时,才用于呈现其他数据),但是,当该序列化程序用于从某些数据创建Album
实例时,它将不会期望传入的数据包含一个tracks
字段。
序列化模型时:
album = Album.objects.first()
serializer = AlbumSerializer(instance=album)
data = serializer.data # This will include the "tracks" field
data
应该包含所有三个字段,“专辑名称”,“艺术家”和“曲目”。
在创建或更新模型时,您不应在数据中包含“跟踪”字段,因为该字段是只读字段。
album_data = {
"album_name": "My Album",
"artist": "My Artist"
}
serializer = AlbumSerializer(data=data)
serializer.is_valid()
serializer.save()
只读序列化器只能通过将实例传递到序列化器并呈现该实例来工作。您不能传递数据来尝试使用只读序列化器创建实例。