我已经为字段创建了一个自定义模板,但结构却很固定。
1-我知道如何访问字段标签(field.id_for_label),但是不知道如何访问键/值对(我希望有field.key,field.val,但它们不起作用)。
2-我想将col-3添加到字段中的每个键/值对(我可以这样做),但也想用<div class='row'> </div>
标签包围四个字符的每个块,以便整齐地对齐,但找不到在模板中执行此操作的方法。
form.py
TOPICS = (
('ANI', 'Animals'),
('ART', 'Art'),
('COM', 'Communication'),
('CRI', 'Crime'),
('CUL', 'Culture/Society'),
('EDU', 'Education'),
('ENT', 'Entertainment'),
('ENV', 'Environment')
[..cont..]
)
preferred_topics = forms.MultipleChoiceField(choices=TOPICS, required=False, widget=forms.CheckboxSelectMultiple())
def __init__(self, *args, **kwargs):
super(NeedsAnalysisForm, self).__init__(*args, **kwargs)
self.helper = FormHelper()
self.helper.layout = Layout(
'lessons_per_week', CustomCheckbox('preferred_topics'), 'teacher', 'grade',)
)
custom_template.html
{% load crispy_forms_field %}
<div id='div_id_preferred_topics' class="form-group">
<label for='id_preferred_topics'>{{ field.label }}</label>
<div class>
{% for field in form.preferred_topics %}
<div class='col-3 custom-control custom-checkbox custom-control-inline'>
<input type='checkbox' class='custom-control-input' name='preferred_topics' id='{{
field.id_for_label }}' val=<!-- ??value?? -->>>
<label class='custom-control-label' for='{{ field.id_for_label }}'><!-- ??key?? -->></label>
</div>
{% endfor %}
</div>
</div>
谢谢。