我想更新我的下拉列表的更改事件的表单。
这是我的看法:
from django.utils import simplejson
response_dic={}
#drop down list
actToValidateId=add_form.cleaned_data['actsToValidate'].pk
act=ActsIdsModel.objects.get(id=actToValidateId)
ids_form = ActsIdsForm(instance=act)
ids_form_dic={}
for field in ids_form.fields:
ids_form_dic[field]=getattr(act, field)
response_dic['ids_form']=ids_form_dic
response_dic['act']=dict([(attr, getattr(act, attr)) for attr in [f.name for f in act._meta.fields]])
return HttpResponse(simplejson.dumps(response_dic), mimetype="application/json")
这是javascript代码:
function display_act_ids(choice)
{
$form=$('#act_ids_form');
var form_data = $form.serialize();
$.ajax
({
url: $form.attr('action'),
type: 'POST',
dataType: 'json',
data: form_data,
success: function(result)
{
alert(result.ids_form.fileNoCelex);
}
});
//don't submit the form
return false;
}
现在,两个问题:
1/如果我想为我的表单控件分配相应的值,我可以更新成功函数如下:
$("#myfield").val(result.ids_form.myfield);
但是,如果我有很多字段要填写怎么办?是否有自动执行此操作的功能?也许一个循环会做......
2/我的主要问题:我在模板中的很多地方使用我的行为实例(和其他变量)(不是在我的表单中)。例如:
{% if act.councilPath %}
<div class="row-fluid">{{ act.councilPath }}</div>
{% endif %}
这样一来,使用ajax是不可能的。这意味着我必须重写我的模板才能让它工作。例如:
<div id="council_path" class="row-fluid"></div>
在我的成功功能中:
$("#council_path").html(result.act.councilPath);
这将是很长的更新。有没有更好的方法,例如ajax“发布和加载”?
如果我不清楚,请告诉我。