Django添加元素到动态表单

w41d8nur  于 2022-12-05  发布在  Go
关注(0)|答案(1)|浏览(162)

是否有方法为表单中的每个输入添加图像元素?

我需要在表单的每个输入旁边都有一个图像。我创建了这个示例表单和模型,它的工作方式与我的代码相同。我希望得到的结果是this

示例表单代码

class CreateProfileForm(forms.ModelForm):
    fieldsets = [
        ("Fieldset 1", {'fields': [
            'first_name', 'last_name'
        ]}),
        ("Fieldset 2", {'fields': [
            'address', 'phone'
        ]}),
    ]

    class Meta:
        model = Profile
        fields = '__all__'

示例型号代码

class Profile(models.Model):
    # FIELDSET 1
    first_name = models.CharField(max_length=50, verbose_name="First name")
    last_name = models.CharField(max_length=50, verbose_name="Last name")

    # FIELDSET 2
    address = models.CharField(max_length=50, verbose_name="Address")
    last_name = models.EmailField(verbose_name="Email")

风景

def create_profile(request):
    form = CreateProfileForm()
    return render(request, 'form.html', {'form': form})

包含表单的模板

{% load forms_fieldset static %}
<div class="form data-form">
    <form>
        {{ form|fieldset:'#000080' }}

        <div class="form-group">
            <button name="upload" type="submit">Create</button>
        </div>
    </form>
</div>
2ledvvac

2ledvvac1#

要为表单中的每个输入添加图像元素,您可以在模板中的表单上使用as_table方法,将表单域呈现为HTML表。每个输入都将呈现为表行,您可以为每行添加img元素以显示图像。
以下是如何在模板中执行此操作的示例:

<div class="form data-form">
    <form>
        {% for fieldset in form.fieldsets %}
            <fieldset style="border-color: #000080;">
                <legend style="color: #000080;">{{ fieldset.legend }}</legend>
                <table>
                    {% for field in fieldset %}
                        <tr>
                            <td><img src="{{ field.image_url }}" alt="{{ field.label }}" /></td>
                            <td>{{ field }}</td>
                            <td>{{ field.help_text }}</td>
                        </tr>
                    {% endfor %}
                </table>
            </fieldset>
        {% endfor %}

        <div class="form-group">
            <button name="upload" type="submit">Create</button>
        </div>
    </form>
</div>

在上面的代码中,我在表单上使用了as_table方法,将表单字段呈现为HTML表。

相关问题