在模型序列化器上设置深度会强制关系字段为read_only吗?

时间:2017-07-24 17:33:44

标签: django django-rest-framework

我一直在寻找一种干净的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时实际上只需要嵌套对象(但我想我应该保持灵活性以防需要改变)

0 个答案:

没有答案