2013-06-29 2 views
0

я использую следующий код, чтобы обернуть все формы поля формы в formset вместе в DIV с Джанго хрустящих формами:Wrap каждой форма в formset с DIV в том числе неупомянутых полей с Джанго форм хрустящих

class OperatorForm(forms.ModelForm): 
    def __init__(self, *args, **kwargs): 
     super(OperatorForm, self).__init__(*args, **kwargs): 
      self.helper = FormHelper(self) 
      self.helper.form_tag = False 
      self.helper.all().wrap_together(Div, css_class="operator-form") 
      self.helper.render_unmentioned_fields = True 

    class Meta: 
     model = Operator 
     fields = tuple(fields_list) 

Создание экземпляра FormHelper с «self» автоматически генерирует макет, не указывая все поля. Мне нужно это, потому что мои поля динамически генерируются. Проблема заключается в том, что поля DELETE и ORDER не добавляются в макет. Поэтому я устанавливаю для render_unmentioned_fields значение True. С этим параметром эти два поля по крайней мере отображаются в форме, но не обертываются остальными полями в div.

Я знаю, что могу вручную перебирать формы в наборе форм и обертывать их с помощью div, что я и делал до сих пор, но для этого требуется ручная обработка ошибок без формы набора форм, которые обычно делается автоматически хрустящим.

EDIT: Обновлен код в соответствии с запросом. Весь этот класс на самом деле завернут в заводский метод, который заполняет поля_имени, так что я могу динамически включать только определенные поля. ЗАКАЗ и УДАЛЕНИЕ исключены. Они автоматически обнаруживаются (включая их результаты в ошибке) и отображаются в форме, они просто не завернуты в div.

+0

Опубликовать весь код в определении класса формы, пожалуйста. –

+0

Вы намеренно покидаете поля DELETE и ORDER? –

+0

Обновлено по запросу. @BrianDant –

ответ

0

Как предложил Брайан Дант, ORDER и DELETE следует добавить вручную, если они должны быть включены в Layout. Моя проблема заключалась в том, что я также передал их в «поля» класса Meta.

class _OperatorForm(forms.ModelForm): 
    def __init__(self, *args, **kwargs): 
     super(_OperatorForm, self).__init__(*args, **kwargs) 
     self.helper = FormHelper(self) 
     self.helper.form_tag = False 
     self.helper.layout.extend(['ORDER', 'DELETE']) 
     self.helper.all().wrap_together(Div, css_class="operator-form") 

    class Meta: 
     model = ApplicationOperator 
     fields = tuple(fields_list) 

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

  • Нет связанных вопросов^_^