Django的形式是UL而不是DIV

mwg9r5ms  于 2023-03-31  发布在  Go
关注(0)|答案(1)|浏览(131)

刚刚把我的Django应用从3.2版升级到4.1版。
当我现在呈现一个有多个选择的表单时,它将每个项呈现为div而不是li。
示例代码如下:

from django import forms
CHOICES = []
for i in range(1, 20):
    CHOICES.append((str(i),str(i)))

class ChoicesForm(forms.Form):
    choices = forms.MultipleChoiceField(required=False, widget=forms.CheckboxSelectMultiple(), choices=CHOICES)

form = ChoicesForm()

print(form)

打印(表单)的输出(缩短)为

<tr>
    <th><label>Choices:</label></th>
    <td>

      <div id="id_choices"><div>
    <label for="id_choices_0"><input type="checkbox" name="choices" value="1" id="id_choices_0">
 1</label>

</div><div>
    <label for="id_choices_1"><input type="checkbox" name="choices" value="2" id="id_choices_1">
 2</label>

</div><div>
    <label for="id_choices_2"><input type="checkbox" name="choices" value="3" id="id_choices_2">
 3</label>

</div><div>
    <label for="id_choices_3"><input type="checkbox" name="choices" value="4" id="id_choices_3">
 4</label>

但是我在之前的代码中得到的是

<tr><th><label>Choices:</label></th><td><ul id="id_choices">
    <li><label for="id_choices_0"><input type="checkbox" name="choices" value="1" id="id_choices_0">
 1</label>

</li>
    <li><label for="id_choices_1"><input type="checkbox" name="choices" value="2" id="id_choices_1">
 2</label>

</li>
    <li><label for="id_choices_2"><input type="checkbox" name="choices" value="3" id="id_choices_2">
 3</label>

</li>
    <li><label for="id_choices_3"><input type="checkbox" name="choices" value="4" id="id_choices_3">
 4</label>

我找不到任何关于为什么要改变的参考资料。我也不知道如何将表单输出创建为列表而不
这是预期的,还是我错过了什么?
我最终想要实现的是将输出格式化为项目的行,而不是div创建的列。

sqyvllje

sqyvllje1#

在Django文档中找到了一个解释为什么会发生这种情况的参考。这是CheckboxSelectMultiple()自版本4以来的一个变化。请参见https://docs.djangoproject.com/en/4.1/ref/forms/widgets/#checkboxselectmultiple。有一个关于如何循环各个复选框的解释,所以我想我可以做到这一点。将需要查看HTML,看看是否有一种方法可以使div语句水平呈现而不是垂直呈现。

相关问题