在django crispy表单中使用formset呈现表格行

在django crispy表单中使用formset呈现表格行,django,tabular,django-crispy-forms,formset,Django,Tabular,Django Crispy Forms,Formset,我想用django crispy forms和bootstrap将实例列表显示为formset,其中每个实例显示为一行,所有字段水平排列 我能找到的所有示例似乎都是以垂直排列的字段呈现实例 我想用: helper.form_class = 'form-horizontal' 可能有效,但似乎没有效果。使用帮助器上的模板属性(有文档记录): helper.template='bootstrap/table\u inline\u formset.html' 这篇文章让我找到了一个解决方案,我在这

我想用
django crispy forms
bootstrap
将实例列表显示为
formset
,其中每个实例显示为一行,所有字段水平排列

我能找到的所有示例似乎都是以垂直排列的字段呈现实例

我想用:

helper.form_class = 'form-horizontal'

可能有效,但似乎没有效果。

使用帮助器上的模板属性(有文档记录):

helper.template='bootstrap/table\u inline\u formset.html'

这篇文章让我找到了一个解决方案,我在这里为那些刚刚开始使用crispy表单的人提供了更全面的解释

表格:

from crispy_forms.helper import FormHelper, Layout
...

class MyForm(forms.ModelForm):

    class Meta:
        model = MyModel
        fields = ['field1', 'field2', 'field3']


MyFormSet = modelformset_factory(MyModel, form=MyForm, extra=0)


class MyFormSetHelper(FormHelper):
    def __init__(self, *args, **kwargs):
        super(MyFormSetHelper, self).__init__(*args, **kwargs)
        self.layout = Layout(
            'field1',
            'field2',
            'field3'
        )
        self.template = 'bootstrap/table_inline_formset.html'
观点:

formset = MyFormSet(queryset=my_qs)
helper = MyFormSetHelper()
context = {'formset': formset, 'helper': helper}
return render(request, 'my_template.html', context)
模板:

{% extends "base.html" %}
{% load crispy_forms_tags %}

{% block content %}

<form action="" method="post">
{% csrf_token %}
{% crispy formset helper %}
</form>

{% endblock content %}
{%extends“base.html”%}
{%load crispy_forms_tags%}
{%block content%}
{%csrf_令牌%}
{%crispy formset helper%}
{%endblock内容%}

如果您使用的是bootstrap4,请使用
helper.template='bootstrap4/table\u inline\u formset.html'