我正在玩重型客户端应用程序。
想象一下,我有这个模型:
class Category(models.Model):
name = models.CharField(max_length=30)
color = models.CharField(max_length=9)
我正在使用knockoutjs(但我想这并不重要)。我有一个包含类别的列表(observableArray),我想创建一个新类别。
我创建了一个新对象,然后将其推送到列表中。到目前为止一切都很好。
如何将其保存在我的数据库中?因为我正在使用tastypie,我可以对'/ api / v1 / category /'进行POST,并且新的类别在数据库上。
好的,但是......我还没有刷新页面,所以...如果我想更新新类别,我该怎么做?
我的意思是,当我检索类别时,我可以保存ID,这样我就可以设置'/ api / v1 / category / id'并保存更改,但是...当我创建一个新类别时,数据库为其分配了一个ID,但我的javascript还不知道该ID。
换句话说,工作流程就像:制作获取>将现有对象(及其ID)推送到列表>创建一个新类别>将其推送到列表中>保存现有类别(该类别在javacript上没有id)>编辑类别>我如何保存更改?
所以,我的问题是,共同的道路是什么?我想过发送类别并以某种方式检索id并将其分配给我在js上的对象以便以后能够修改它。问题是对服务器进行POST不会返回任何内容。
过去我做了类似的事情,通过post发送对象,保存,检索并发送回来,在success方法中检索id并将其分配给js对象。
谢谢!
答案 0 :(得分:8)
Tastypie为Resources提供了always_return_data
选项。
当您的资源always_return_data=True
时,API始终在POST / PUT上返回完整的对象事件,这样当您创建新对象时,您可以在同一请求中获取创建的ID。
然后你可以从你的AJAX读取响应并解码JSON(我还不知道敲门声。)
希望这有帮助