我正在使用Boostrap模态淡入淡出窗口,它使Django表单更新我的数据库记录。而我未能做的就是如果用户打开了更新窗口并且没有更改任何内容,则不会重新加载页面。如果你看下面的代码,我会更容易理解:
def updateTask(request, task_id):
#cur_usr_sale_point = PersonUnique.objects.filter(employees__employeeuser__auth_user = request.user.id).values_list('agreementemployees__agreement_unique__sale_point_id',flat=True)
selected_task = Tasks.objects.get(id=task_id)
task_form = TaskForm(instance=selected_task )
taskTable = Tasks.objects.all()
if request.method == 'POST':
task_form = TaskForm(request.POST,instance=selected_task)
if task_form.has_changed():
if task_form.is_valid():
# inside your model instance add each field with the wanted value for it
task_form.save();
return HttpResponseRedirect('/task_list/')
else: # The user did not change any data but I still tell Django to
#reload my page, thus wasting my time.
return HttpResponseRedirect('/task_list/')
return render_to_response('task_management/task_list.html',{'createTask_form':task_form, 'task_id': task_id, 'taskTable': taskTable},context_instance=RequestContext(request))
问题是,有没有办法告诉Django更改url(就像它重定向后发生的那样)但是不是第二次加载相同数据的同一页面?
答案 0 :(得分:1)
这不是一件轻而易举的事,但您需要的基本步骤是:
This blog post是整个过程的一个很好的演练(尽管针对不同的最终结果,您需要修改视图)。
以下是一些有助于完成上述步骤的SO答案:
基本上:
$('#your-form-id').on('submit', function(event){
event.preventDefault();
your_ajax_function();
});