Я пытаюсь выучить Крошку и Бутылку, создавая приложение для заметок для книг.
Модели и отношения состоят из 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 (или использовать его в очень ограниченной степени), как мне решить их?