У меня была такая же проблема. Я не мог найти простой способ (без переопределения многих вещей из django.forms), поэтому я нашел это быстрое и грязное решение.
Определить новый шаблонный фильтр, который разбивает строку на список с учетом разделителя; см. этот простой фрагмент от Ciantic. Сохранить фрагмент как templatetags/whatever_name.py
.
В forms.py
заполните атрибут help_text
поля вашей строкой справки и инструкции, разделенных символом «#» (конечно, вы можете выбрать любой разделитель, какой захотите); что-то вроде
my_field = forms.MultipleChoiceField(help_text = '%s#%s' % (help_string, instruction_string), ...)
help_text
- это строка (уже помеченная как безопасная), поэтому вы не можете поместить в нее список (именно поэтому необходим пользовательский фильтр разделения).
И это пример шаблона, который показывает строки справки и инструкции для каждого поля в форме:
{% load whatever_name %}
{% for field in form %}
help: {% filter split:"#"|first %}{{ field.help_text }}{% endfilter %}
instruction: {% filter split:"#"|last %}{{ field.help_text }}{% endfilter %}
{% endfor %}
Очевидно, что вы не можете использовать as_p
, as_table
и as_ul
для визуализации формы.