【问题标题】:Django, Tastypie and retrieving the new object dataDjango,Tastypie 和检索新对象数据
【发布时间】:2011-12-24 00:42:06
【问题描述】:

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

想象一下我有这个模型:

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

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

我创建了一个新对象并将其推送到列表中。到目前为止一切顺利。

将其保存在我的数据库中怎么样?因为我使用的是 sweetpie,所以我可以向 '/api/v1/category/' 发布一个 POST,然后瞧,新类别在数据库中。

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

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

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

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

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

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

谢谢!

【问题讨论】:

    标签: django knockout.js tastypie


    【解决方案1】:

    Tastypie 带有一个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

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-23
      • 2014-03-07
      • 2013-07-18
      • 1970-01-01
      • 1970-01-01
      • 2021-12-30
      相关资源
      最近更新 更多