我有一个Django模板,用于呈现包含Django formsets的表。
模板(简化)
<table id = 'my_table'>
{% for form in my_formset %}
<tr><td>{{form.my_field}}</td></tr>
{% endfor %}
</table>
现在,我有一个看起来像这样的Jquery代码:
$(document).on('change', '#my_table tr input[type = text], input[type = number]', function(){
// currently the following code handles save event
// $.post ('/save_my_form/', $form.serialize())
});
和相应的Django视图
def save_my_form(request):
# .......
for form in order_draft_formset:
if form.is_valid():
form.save()
# .......
这种方法的问题是我只在一个表单中修改一个单个输入元素,而Django视图循环遍历整个formset。问题是,是否有任何内置的Django方法来获取修改后的输入被本地化的表单,因此我只在我的视图中保存这个确切的表单而不通过整个formset。我觉得Jquery必须以某种方式通过post-request参数提交一些信息,这将有助于Django这样做。至于现在,我正在考虑解析自动生成的Django id,f.e,id_form-5-my_field,并获得&#34; 5&#34;在Jquery中传出这个&#34; 5&#34;到Django。但我有一种可怕的感觉,这是一个“肮脏的”#34;方法,必须有一个更清洁的方法来做到这一点。关于这个的任何想法?
答案 0 :(得分:2)
if form.has_changed():
if form.is_valid():
form.save()