Я хочу обновить форму в событии изменения в раскрывающемся списке.обновить форму django с jquery/ajax
Вот мое мнение:
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/Моя основная проблема: Я использую экземпляр act (и другие переменные) во многих местах в своем шаблоне (не в моей форме). Например:
{% 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 «post and load»?
Скажите, пожалуйста, если я не понимаю.