django rest框架中的read_only,读写字段和序列化器是什么?

时间:2018-10-18 12:42:41

标签: django serialization django-rest-framework deserialization

例如在DRF中编写序列化程序时,如下所示:

%matplotlib inline

read_only属性在这里做什么?还有只读串行器,那是什么?

1 个答案:

答案 0 :(得分:0)

read_only属性意味着TrackSerializer字段仅在实例被序列化(例如,调用serializer.dataserializer.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()

只读序列化器只能通过将实例传递到序列化器并呈现该实例来工作。您不能传递数据来尝试使用只读序列化器创建实例。