我一直在寻找一种干净的GET嵌套模型实例,并认为我已经找到了depth
属性。但后来我发现证据表明这会将所有fk,m2m和其他关系字段设置为read_only,这会在POST新模型实例时导致问题。
我发现的证据是1)字段从可浏览的api中的POST表单中消失,2)当我尝试从我的前端UI创建一个新的模型实例时,我得到关于不为关系字段提供id的错误(哪些是非NULL字段),并且最诅咒3)OPTIONS http方法为这些字段返回read_only: true
。
所以我想知道最好的修补方法是什么,以便我可以从我的前端UI保存新的模型实例。我正在考虑的解决方案包括:
1)保留depth属性(depth=2
)并编写一个正确保存关系字段的自定义序列化程序(在这种情况下,我需要将字段显式设置为read_only=False
模特?),
2)删除深度属性,改为在视图中编写逻辑,使用select_related
代替返回嵌套对象,或者
3)使用2个序列化程序,一个用于depth=2
用于GET,一个用于POST用于非嵌套用户,因为我在GETing时实际上只需要嵌套对象(但我想我应该保持灵活性以防需要改变)