【问题标题】:Django Crispy Forms rearrange layout and retain Bootstrap inline formatting?Django Crispy Forms 重新排列布局并保留 Bootstrap 内联格式?
【发布时间】:2014-02-26 07:48:19
【问题描述】:

我目前正在处理一个 Django 项目,并且正在使用 cripsy-forms 与 Bootstrap 一起格式化和显示 HTML 表单。如果我允许 Crispy-Forms 使用默认布局顺序,它将(在大多数情况下)格式化正确的 HTML 布局以利用 Bootstrap 的内联表单。

为了重新排列表单上字段的顺序,我正在尝试使用布局助手。当我添加 Layout 助手时,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',

    )

【问题讨论】:

    标签: django forms twitter-bootstrap django-crispy-forms


    【解决方案1】:

    您是否尝试过使用fields 属性?生成的 Form 类将有一个表单字段in the order specified in the fields attribute

    class MyEntryForm(ModelForm):
        class Meta:
            model = "mymodel"
            fields = ['field1', 'field3', 'field2']
    

    【讨论】:

    • 是的,这行得通。我试图使用 Layout helper 的 Crispy-Forms 解决方案,但完全忘记了字段。谢谢@arocks!
    猜你喜欢
    • 2012-06-16
    • 2015-02-02
    • 2019-08-11
    • 1970-01-01
    • 2012-11-10
    • 2015-08-03
    • 2013-08-01
    • 2012-07-03
    • 2023-03-24
    相关资源
    最近更新 更多