2016-12-19 32 views
0

我一直在努力使用django-crispy-forms在一行中获取我的表单(包括按钮)。django-crispy-forms:将按钮与字段垂直对齐

我最终找到了解决方案,但我决定将问题与答案一起发布,以防其他人面临同样的问题。在forms.py

代码如下:

class SearchForm(forms.Form): 
    [...] 

    def __init__(self, *args, **kwargs): 
     super(SearchForm, self).__init__(*args, **kwargs) 
     self.helper = FormHelper() 
     self.helper.form_class = 'form-inline' 

     self.helper.layout = Layout(
        Field('From', placeholder='From'), 
        Field('To', placeholder='To'), 
        Field('Date', placeholder='Date'), 
        ButtonHolder(Submit('submit', 'Search', css_class='btn btn-primary')) 
     ) 

但按钮被显示在第二行。

button appears in a second line

我尝试作为替代

self.helper.form_class = 'form-horizontal' 

,但没有什么区别。

回答

0

我发现了一个基于this post in github的解决方案。

这是通过使用FormActions相适应的布局对象:

self.helper.layout = Layout(
      Field('From', placeholder='From'), 
      Field('To', placeholder='To'), 
      Field('Date', placeholder='Date'), 
      FormActions(ButtonHolder(Submit('submit', 'Search', css_class='btn btn-primary'))) 
     ) 

而且所有框和按钮完全对齐:

desired result, all fields and button in one line