在django-crispy-forms中使用表格集渲染表格行

ray*_*jay 5 django formset tabular django-crispy-forms

我想将实例列表显示为formsetwith django-crispy-formsbootstrap其中每个实例都显示为一行,所有字段均水平排列。

我可以找到的所有示例似乎都以垂直放置其字段的方式渲染实例。

我以为使用:

helper.form_class = 'form-horizontal'
Run Code Online (Sandbox Code Playgroud)

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

小智 5

这是让我找到解决方案的帖子,我在这里为那些刚开始使用脆皮形式的人提供更完整的解释

形式:

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'
Run Code Online (Sandbox Code Playgroud)

意见:

formset = MyFormSet(queryset=my_qs)
helper = MyFormSetHelper()
context = {'formset': formset, 'helper': helper}
return render(request, 'my_template.html', context)
Run Code Online (Sandbox Code Playgroud)

模板:

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

{% block content %}

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

{% endblock content %}
Run Code Online (Sandbox Code Playgroud)


Pau*_*ipp 4

在助手上使用模板属性(记录在此处): helper.template = 'bootstrap/table_inline_formset.html'

  • 如果您使用的是 bootstrap4,请使用 `helper.template = 'bootstrap4/table_inline_formset.html'`。 (3认同)