如何使用AJAX实现以下用例?我读了question这是我能找到的最接近我的用例但是我仍然不确定如何开始。
使用案例
我在票据项的输入文本字段中输入数量编号,例如“3”。输入此值后,下方会显示3个表单集,其中包含电子邮件字段。
从概念上讲,我在考虑输入值的变化,加载django formset变量,如
{% for form in formset %}
{{ form }}
{% endfor %}
在javascript onChange函数中,但我不知道如何实际执行此操作。
答案 0 :(得分:1)
我有一个类似的用例,其中formset可以由标准的http响应或Ajax加载来呈现。
我的DRY解决方案是:
视图实例化formset,渲染模板,但在其中我有一个{% include "path/to/formset-snippet.html %}
标记(由带有标记的包围,可重复使用以下内容)。
我进行Ajax调用以在DOM节点中呈现html片段(比如说a)。在 JQuery 中就是这样的:
$("#my_container").load(url, function(response, status, xhr) {
if (status == "error") {
$(this).html("Sorry but there was an error: " +
xhr.status + " " + xhr.statusText +
'<div style="height:300px; overflow:scroll;">' +
response + "</div>");
}
});
视图实例化相同的formset并呈现 formset-snippet.html 。这里有 MyModel 的例子, images 与:
相关联@login_required
def images_formset(request, object_id):
instance = MyModel.objects.get(pk=object_id)
prefix = request.GET.get('form_prefix', None)
formset = ImageMyModelFormSet(instance=instance, prefix=prefix)
return render_to_response('my_app/images_my_model_form_snippet.html', {
'images_my_model_formset': formset,
}, context_instance=RequestContext(request))
希望它有所帮助。