Django Crispy Forms 重新排列布局并保留 Bootstrap 内联格式?

Posted

技术标签:

【中文标题】Django Crispy Forms 重新排列布局并保留 Bootstrap 内联格式?【英文标题】:Django Crispy Forms rearrange layout and retain Bootstrap inline formatting? 【发布时间】: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',

    )

【问题讨论】:

【参考方案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!

以上是关于Django Crispy Forms 重新排列布局并保留 Bootstrap 内联格式?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Django Crispy Forms 会抛出“模块‘django.forms.forms’没有属性‘BoundField’”

替代 django-crispy-forms

如何使用 Ajax 渲染 django-crispy-forms 的验证错误?

Django-crispy-forms:为 AppendedText 父 div 设置 CSS 类

python测试开发django-41.crispy-forms设计标签式导航菜单(TabHolder)

使用内联表单在 django-crispy-forms 中呈现字段错误