django - 如何安排表单选择多列

时间:2013-01-22 02:20:42

标签: django templates

下面是

forms.py:

GRADE_CHOICE=(
               ('1','Grade 1'),
               ('2','Grade 2'),
               ('3','Grade 3'),
               ('4','Grade 4'),
               ('5','Grade 5'),
               ('6','Grade 6') )

grades=forms.MultipleChoiceField(
               choices=GRADE_CHOICE,
               required=True, 
               widget=CheckboxSelectMultiple())

Template.html:

< divclass="controls">
{{ form.grades }}
< /div>

上面的代码工作正常,模板显示正确的数据。但是,它只在一列或逐行显示数据。

<ul>
    <li><label for="id_grades_0"><input type="checkbox" name="grades" value="1" id="id_grades_0" /> Grade 1</label></li>
    <li><label for="id_grades_1"><input type="checkbox" name="grades" value="2" id="id_grades_1" /> Grade 2</label></li>
    <li><label for="id_grades_2"><input type="checkbox" name="grades" value="3" id="id_grades_2" /> Grade 3</label></li>
    <li><label for="id_grades_3"><input type="checkbox" name="grades" value="4" id="id_grades_3" /> Grade 4</label></li>
    <li><label for="id_grades_4"><input type="checkbox" name="grades" value="5" id="id_grades_4" /> Grade 5</label></li>
    <li><label for="id_grades_5"><input type="checkbox" name="grades" value="6" id="id_grades_5" /> Grade 6</label></li>
</ul>

有没有办法改变它,所以它会在一行中显示3条记录?

1 个答案:

答案 0 :(得分:0)

你可以用风格来做,这是一个简单的例子,它可以通过多种方式实现。

风格:

li.three  { width:33.333%;float:left;display:inline }

标记:

<ul>
     <li class='three'>A</li>
     <li class='three'>B</li>
     <li class='three'>C</li>
     <li class='three'>D</li>
     <li class='three'>E</li>
     <li class='three'>F</li>
     <li class='three'>G</li>
     <li class='three'>H</li>
</ul>

#to add the style use the "attrs" kwarg.
grades=forms.MultipleChoiceField(
           choices=GRADE_CHOICE,
           required=True, 
           widget=CheckboxSelectMultiple(attrs={'class': 'three'}))

或者,您可以自定义render功能,但样式更简单并且可以完成工作。

我无法忍受每一个李与上一级的比赛的标记。 You can also customize the render function to allow the style to be put on the ul vs li