5

我玩了一点重客户端应用程序。

想象一下我有这个模型:

class Category(models.Model):
    name = models.CharField(max_length=30)
    color = models.CharField(max_length=9)

我使用的是 knockoutjs(但我想这并不重要)。我有一个包含类别的列表(observableArray),我想创建一个新类别。

我创建了一个新对象并将其推送到列表中。到现在为止还挺好。

将其保存在我的数据库中怎么样?因为我使用的是tastepie,所以我可以对'/api/v1/category/'进行POST,然后瞧,新类别在数据库中。

好的,但是...我还没有刷新页面,所以...如果我想更新新类别,我该怎么做?

我的意思是,当我检索类别时,我可以保存 ID,这样我就可以放入 '/api/v1/category/id' 并保存更改,但是......当我创建一个新类别时,数据库分配一个 id,但我的 javascript 还不知道那个 id。

换句话说,工作流程类似于:

进行获取>将现有对象(及其ID)推送到列表中>创建新类别>将其推送到列表中>保存现有类别(该类别在javacript上没有ID)>编辑类别>我如何保存更改?

所以,我的问题是,共同的路径是什么?我考虑过发送类别并以某种方式检索 id 并将其分配给我在 js 上的对象,以便以后能够对其进行修改。问题是对服务器进行 POST 不会返回任何内容。

过去我做过类似的事情,通过 post 发送对象,保存,检索并发送回,在成功方法上检索 id 并将其分配给 js 对象。

谢谢!

4

1 回答 1

9

Tastypie 带有always_return_data资源选项。

对于您的资源,API 始终在always_return_data=TruePOST/PUT 上返回完整的对象事件,因此当您创建新对象时,您可以在同一请求中获取创建的 ID。

然后,您可以从 AJAX 读取响应并解码 JSON(我还不知道淘汰赛)。

查看文档:http ://readthedocs.org/docs/django-tastypie/en/latest/resources.html?highlight=always_return_data#always-return-data

希望这可以帮助

于 2012-01-13T23:19:28.950 回答