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’”
如何使用 Ajax 渲染 django-crispy-forms 的验证错误?
Django-crispy-forms:为 AppendedText 父 div 设置 CSS 类