Python、Django:编辑 inlineformset_factory

问题描述

在我的应用程序中,我使用的是 inlineformset_factory 并且知道它工作正常!但是当在我的模板中显示它时,标签总是停留在输入字段的正上方。有没有办法将它们并排显示,甚至将标签移动为输入字段内的某种占位符?

views.py

formset = inlineformset_factory(Model_A,Model_B,can_delete=False,extra=0,fields=('fields_01','fields_02','fields_03'))

template.html

<form method="post">
    {% csrf_token %}
    {{ formset.management_form }}
    {% for form in formset %}
        {{ form }}
    {% endfor %}
    <button type="submit">Save</button>
</form>

感谢您的帮助,祝您周末愉快!

解决方法

试试这个:

<form action="" method="POST">
                        {% csrf_token %}
                        {{ form.management_form }}
                        {% for field in form %}
                            {{field.product.label}} - {{field.product}}   #here product is my field name
                            <hr>
                        {% endfor %}
                        
                        <input type="submit" name="Submit">
 </form>

你必须对每个字段都这样做

#Changes

 <form method="post">
        {% csrf_token %}
        {{ formset.management_form }}
        {% for form in formset %}
            {{ form.Field_name.label }}  -  {{form.Field_name}} #1st field

            {{ form.Field_name.label }}  -  {{form.Field_name}} #2nd field
        {% endfor %}
        <button type="submit">Save</button>
    </form>
,

我认为显示是受css影响的。
在chrome中使用F12查看css查找原因。
您可以编辑 css 以更改显示。
或者使用 django-widgets-improved 和 bootstrap 将 class 设置为表单的字段。

{% load widget_tweaks %}
 <form method="post">
        {% csrf_token %}
        {{ formset.management_form }}
        {% for form in formset %}
            {% for field in form %}
              {% render_field field class="form-control" %}
            {% endfor %}
        {% endfor %}
        <button type="submit">Save</button>
  </form>