2016-08-07 2 views
0

У меня есть шаблон 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()) 
    }); 

И соответствующий вид Джанго

def save_my_form(request): 
    # ....... 
    for form in order_draft_formset: 
     if form.is_valid(): 
      form.save() 
    # ....... 

В проблема с этим подходом заключается в том, что я изменяю только один сингл входной элемент в одной форме, тогда как представление Django проходит через весь набор форм. Вопрос в том, есть ли встроенный способ Django для извлечения формы, в которой локализован модифицированный вход, поэтому я сохраняю только эту точную форму в своем представлении, не пройдя весь набор форм. Я чувствую, что JQuery должен каким-то образом представить некоторую информацию через параметры после запроса, которые помогут Django сделать это. На данный момент я думаю о разборе автоматически созданного Django id, f.e, id_form-5-my_field и получения «5» из него в JQuery и передачи этого «5» в Django. Но у меня есть ужасное чувство, что это «грязный» метод, и должен быть более чистый способ сделать это. Есть идеи по этому поводу?

ответ

2
if form.has_changed(): 
    if form.is_valid(): 
     form.save() 
+0

Да, практичный и элементарный. Не думал об этом. Спасибо) –

Смежные вопросы