Django,Tastypie和检索新的对象数据

时间:2011-12-24 00:42:06

标签: django knockout.js tastypie

我正在玩重型客户端应用程序。

想象一下,我有这个模型:

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对象。

谢谢!

1 个答案:

答案 0 :(得分:8)

Tastypie为Resources提供了always_return_data选项。

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

然后你可以从你的AJAX读取响应并解码JSON(我还不知道敲门声。)

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

希望这有帮助