【发布时间】:2015-03-04 09:47:09
【问题描述】:
我正在尝试通过为书籍制作笔记应用程序来学习 Peewee 和 Bottle。
模型和关系由Subject -< Book -< Chapter -< Note组成。
在note.tpl 页面上,我希望将所有笔记显示在一个表格中,并允许最终用户随意更新任何笔记:
<FORM action="/notes" method="POST">
<input type="hidden" name="chapter_id" value="{{chapter.id}}"
<% note_ids = ""
for note in chapter.notes:
note_ids += note.id
end
note_ids = note_ids[:-1]
%>
<input type="hidden" name="note_ids" value="{{note_ids}}" />
<TABLE>
<TR><TD>Note Meta</TD><TD>Note</TD></TR>
% for note in chapter.notes:
<TR><TD>
Tag:<input type="text" value="note_tag#{{note.id}}" /><br />
Pg#:<input type="text" value="page_number#{{note.id}}" /><br />
</TD>
<TD> <textarea name="note#{{note.id}}" /><br />
</TR>
% end
</TABLE>
</FORM>
假设我有一个这样的控制器:
@app.route('/notes/, method='POST')
def note_action():
for i in request.forms.get('note_ids').split(','):
note = Note(tag=request.forms.get('note_tag#' + i),
page_number=request.forms.get('page_number#' + i),
chapter=request.forms.get('chapter_id'))
note.save()
chapter = Chapter.select().where(Chapter.id==chapter_id)
return template('notes', chapter=chapter)
这很糟糕,原因有三个:
1) 它不会进行批量更新,而是一次更新每个音符。如何在 Peewee 中进行批量更新?
2) 它会更新每一个笔记,甚至是用户尚未编辑的笔记。我如何能够确定哪些行已被编辑并仅更新这些行?
很少使用JQuery(或使用它的程度非常有限),我应该如何解决这些问题?
【问题讨论】:
标签: python bottle peewee batch-updates