Django推迟了对数据库的更新

时间:2012-02-15 02:20:06

标签: ajax django templates models delayed-execution

我正在创建一个Django / JQuery / MySQL应用程序,我将复合数据结构'grid'作为

传递
return render_to_response('products.html', grid)

我将'grid'渲染成一组UI元素('td','button','div'等封装在HTML'表'中。

一个典型的用例:

  1. 用户点击表格中的某个UI元素
  2. 调用jQUery.click(),为被点击的元素创建内部“输入”标记。
  3. 用户可以添加/修改/删除元素中的文本。
  4. 当焦点丢失时,调用jQuery.blur(),它会恢复被点击元素的原始属性,例如删除输入标记等。
  5. jQuery.blur()还调用一个AJAX函数,我在其中执行.post调用,将用户修改后的数据发送回URL(视图中的函数)。
  6. 视图中的被调用函数然后提交数据库中的新更改并将“成功”事件返回到网页:

    tc_model_instance.update(tc_id=json_data['id'])
    
  7. 通过这个用例,您可以看到,只要用户输入数据并将焦点放在特定元素上,就会立即将更改提交到数据库。如果不在INNODB中使用数据库事务,我该如何创建视图模板关联,以便HTML模板中的任何更改都异步反映在模型中,但不一定写入数据库。

    相关问题: 如果可能,我还想在渲染模板和我的数据结构之间创建基于事件的双向关联,作为视图的一部分,以便在Web浏览器的UI元素或关联视图的数据中进行的任何更改始终保持同步。我计划最大限度地使用AJAX。不确定表格在这方面是否有意义。

    感谢。

1 个答案:

答案 0 :(得分:1)

您可能会将对象的副本放入会话映射中,并且所有帖子都会直接更改该对象而不是DB。然后,当用户按下保存按钮时,您将启动另一个POST命令到服务器,然后只调用session ['my_object']。save()。

请注意,会话对象也保存在数据库中,所以如果你试图避免完全按照我上面写的那样做,那将无济于事。