djangorestframework modelserializer 处理关系字段
1.关系
一对一、多对一、多对多
2.drf modelserializer对关系字段的处理
modelserializer默认处理关系字段为PrimaryKeyRelatedField,默认是id-pk。
多对一:直接写入id
多对多:写入id-list [id1, id2]
3.具体细节
[1] read_only设置serializer字段后,只能序列化;反序列化输入只保存在initial_data,不进入validated_data中
[2] modelserializer中底层可以处理validated_data中的多对多关系,但是read_only设置后,validated_data不包含多对多关系;因此在重写save,再单独处理多对多关系
[3] drf modelserialzier中处理多对多关系,首先处理非多对多关系,然后save,再处理多对多关系。如样例代码!
instance.set是底层自动调用django orm执行,写入多对多第三张表!