Форма Django - маркировка набора

ПРИЧИНА

При использовании плагина DataTables с разбиением на страницы в DOM существуют только текущие строки страниц для обеспечения производительности и совместимости. Поэтому, когда вы отправляете форму, отправляются только текущие формы формы страницы.

РЕШЕНИЕ 1: Отправить форму напрямую

Трюк состоит в том, чтобы повернуть элементы формы со страниц, отличных от текущего, в перед отправкой формы.

var table = $('#example').DataTable();

// Handle form submission event
$('#frm-example').on('submit', function(e){
   var form = this;

   // Encode a set of form elements from all pages as an array of names and values
   var params = table.$('input,select,textarea').serializeArray();

   // Iterate over all form elements
   $.each(params, function(){
      // If element doesn't exist in DOM
      if(!$.contains(document, form[this.name])){
         // Create a hidden element
         $(form).append(
            $('')
               .attr('type', 'hidden')
               .attr('name', this.name)
               .val(this.value)
         );
      }
   });
});

См. jQuery DataTables: как отправить все данные формы страницы - Отправить непосредственно для получения более подробной информации и примеров.

РЕШЕНИЕ 2: Отправить форму через Ajax

Другое решение - отправить форму через Ajax.

var table = $('#example').DataTable();

// Handle form submission event
$('#frm-example').on('submit', function(e){
   // Prevent actual form submission
   e.preventDefault();

   // Serialize form data
   var data = table.$('input,select,textarea').serialize();

   // Submit form data via Ajax
   $.ajax({
      url: '/echo/jsonp/',
      data: data,
      success: function(data){
         console.log('Server response', data);
      }
   });
});

См. jQuery DataTables: как отправить все данные формы страницы - Отправить через Ajax для получения более подробной информации и примеров.

ПРИМЕЧАНИЯ

Обратите внимание, что оба решения будут работать только в режиме обработки на стороне клиента.

ССЫЛКИ

См. jQuery Таблицы данных: как отправить данные всех страниц для более подробной информации.

66
задан TehOne 12 March 2009 в 00:18
поделиться

2 ответа

Необходимо использовать:

def __init__(self, *args, **kwargs):
    super(RegistrationFormTOS, self).__init__(*args, **kwargs)
    self.fields['email'].label = "New Email Label"

Примечание сначала необходимо использовать вызов super.

126
ответ дан Xbito 7 November 2019 в 10:58
поделиться

Вы получаете доступ к полям в форме через 'поля' dict:

self.fields['email'].label = "New Email Label"

Это - то, так, чтобы Вы не волновались о полях формы, имеющих столкновения имени с методами класса формы. (Иначе у Вас не могло быть поля, названного 'чистым' или 'is_valid'), Определение полей непосредственно в теле класса является главным образом просто удобством.

8
ответ дан Matthew Marshall 7 November 2019 в 10:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: