Django Crispy Forms меняет макет и сохраняет встроенное форматирование Bootstrap?

В настоящее время я работаю над проектом Django и использую cripsy-forms для форматирования и отображения HTML-форм в сочетании с Bootstrap. Если я позволю Crispy-Forms использовать порядок макета по умолчанию, он (по большей части) отформатирует правильный HTML-макет для использования встроенных форм с Bootstrap.

Чтобы изменить порядок полей в форме, я пытаюсь использовать помощник макета. Когда я добавляю помощник по макету, Crispy-Forms теряет встроенную возможность маркировки, и все метки отображаются над их полевыми аналогами.

Как я могу заставить Crispy Forms изменить порядок макета и при этом сохранить встроенное форматирование Bootstrap?

class MyEntryForm(ModelForm):
def __init__(self, *args, **kwargs):
    super(MyEntryForm, self).__init__(*args, **kwargs)

    self.helper = FormHelper(self)
    self.helper.form_id = 'id-MyEntryForm'
    self.helper.help_text_inline = True
    self.helper.error_text_inline = True
    self.form_show_labels = True
    self.helper.form_method = 'post'
    self.helper.form_action = 'submit'
    self.helper.form_tag = False
    self.helper.add_input(Submit('submit', 'Submit'))
    self.helper.form_class = 'form-inline'
    self.helper.field_template = 'bootstrap3/layout/inline_field.html'

    self.helper.layout = Layout(
        'field1',
        'field3',
        'field2',

    )

person John D.    schedule 02.02.2014    source источник


Ответы (1)


Вы пробовали использовать атрибут fields? Сгенерированный класс Form будет иметь поле формы в порядке, указанном в атрибуте fields.

class MyEntryForm(ModelForm):
    class Meta:
        model = "mymodel"
        fields = ['field1', 'field3', 'field2']
person arocks    schedule 03.02.2014
comment
Да, это работает. Я пытался использовать решение Crispy-Forms помощника по макету и совершенно забыл о полях. Спасибо @arocks! - person John D.; 05.02.2014